#include <isl/set.h>
#include <isl/union_map.h>
#include <isl/union_set.h>
#include <isl/ast_build.h>
#include <isl/schedule.h>
#include <isl/schedule_node.h>

#include <tiramisu/debug.h>
#include <tiramisu/core.h>

#include <string.h>
#include <Halide.h>
#include "halide_image_io.h"


using namespace tiramisu;

int main(int argc, char **argv)
{
    // Set default tiramisu options.
    global::set_default_tiramisu_options();

    tiramisu::function laplacian_tiramisu("laplacian_tiramisu");

    Halide::Buffer<uint8_t> in_image = Halide::Tools::load_image("./utils/images/rgb.png");
    int SIZE0 = in_image.extent(0);
    int SIZE1 = in_image.extent(1);
    int SIZE2 = in_image.extent(2);

    // Input params.
    float alpha = 1;
    float beta = 1;
    int32_t levels = 8;

    // Output buffers.
    int local_laplacian_extent_2 = SIZE2;
    int local_laplacian_extent_1 = SIZE1;
    int local_laplacian_extent_0 = SIZE0;
    tiramisu::buffer buff_local_laplacian("buff_local_laplacian", {tiramisu::expr(local_laplacian_extent_2), tiramisu::expr(local_laplacian_extent_1), tiramisu::expr(local_laplacian_extent_0)}, tiramisu::p_uint16, tiramisu::a_output, &laplacian_tiramisu);

    // Input buffers.
    int input_extent_2 = SIZE2;
    int input_extent_1 = SIZE1;
    int input_extent_0 = SIZE0;
    tiramisu::buffer buff_input("buff_input", {tiramisu::expr(input_extent_2), tiramisu::expr(input_extent_1), tiramisu::expr(input_extent_0)}, tiramisu::p_uint16, tiramisu::a_input, &laplacian_tiramisu);
    tiramisu::computation input("[input_extent_2, input_extent_1, input_extent_0]->{input[i2, i1, i0]: (0 <= i2 <= (input_extent_2 + -1)) and (0 <= i1 <= (input_extent_1 + -1)) and (0 <= i0 <= (input_extent_0 + -1))}", tiramisu::expr(), false, tiramisu::p_uint16, &laplacian_tiramisu);
    input.set_access("{input[i2, i1, i0]->buff_input[i2, i1, i0]}");


    // Define temporary buffers for "gray".
    tiramisu::buffer buff_gray("buff_gray", {(tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)13)) / tiramisu::expr((int32_t)8))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)5)) / tiramisu::expr((int32_t)4))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)1)) / tiramisu::expr((int32_t)2))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), (tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)-1))) + tiramisu::expr((int32_t)384)), (tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)13)) / tiramisu::expr((int32_t)8))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)5)) / tiramisu::expr((int32_t)4))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)1)) / tiramisu::expr((int32_t)2))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), (tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)-1))) + tiramisu::expr((int32_t)384))}, tiramisu::p_float32, tiramisu::a_temporary, &laplacian_tiramisu);

    // Define store level for "buff_gray".

    // Define loop bounds for dimension "gray_s0_y".
    tiramisu::constant gray_s0_y_loop_min("gray_s0_y_loop_min", tiramisu::expr((int32_t)-383), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant gray_s0_y_loop_extent("gray_s0_y_loop_extent", (tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)13)) / tiramisu::expr((int32_t)8))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)5)) / tiramisu::expr((int32_t)4))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)1)) / tiramisu::expr((int32_t)2))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), (tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)-1))) + tiramisu::expr((int32_t)384)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);

    // Define loop bounds for dimension "gray_s0_x".
    tiramisu::constant gray_s0_x_loop_min("gray_s0_x_loop_min", tiramisu::expr((int32_t)-383), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant gray_s0_x_loop_extent("gray_s0_x_loop_extent", (tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)13)) / tiramisu::expr((int32_t)8))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)5)) / tiramisu::expr((int32_t)4))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)1)) / tiramisu::expr((int32_t)2))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), (tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)-1))) + tiramisu::expr((int32_t)384)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::computation gray_s0(
        "[gray_s0_y_loop_min, gray_s0_y_loop_extent, gray_s0_x_loop_min, gray_s0_x_loop_extent]->{gray_s0[gray_s0_y, gray_s0_x]: "
        "(gray_s0_y_loop_min <= gray_s0_y <= ((gray_s0_y_loop_min + gray_s0_y_loop_extent) + -1)) and (gray_s0_x_loop_min <= gray_s0_x <= ((gray_s0_x_loop_min + gray_s0_x_loop_extent) + -1))}",
        tiramisu::expr(), true, tiramisu::p_float32, &laplacian_tiramisu);
    tiramisu::constant t541("t541", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr((int32_t)0), ((tiramisu::var("input_min_2") + tiramisu::expr(input_extent_2)) + tiramisu::expr((int32_t)-1))), tiramisu::var("input_min_2")), tiramisu::p_int32, false, &gray_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t542("t542", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::var("gray_s0_y"), ((tiramisu::var("input_min_1") + tiramisu::expr(input_extent_1)) + tiramisu::expr((int32_t)-1))), tiramisu::var("input_min_1")), tiramisu::p_int32, false, &gray_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t543("t543", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::var("gray_s0_x"), ((tiramisu::var("input_min_0") + tiramisu::expr(input_extent_0)) + tiramisu::expr((int32_t)-1))), tiramisu::var("input_min_0")), tiramisu::p_int32, false, &gray_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t544("t544", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr((int32_t)1), ((tiramisu::var("input_min_2") + tiramisu::expr(input_extent_2)) + tiramisu::expr((int32_t)-1))), tiramisu::var("input_min_2")), tiramisu::p_int32, false, &gray_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t545("t545", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::var("gray_s0_y"), ((tiramisu::var("input_min_1") + tiramisu::expr(input_extent_1)) + tiramisu::expr((int32_t)-1))), tiramisu::var("input_min_1")), tiramisu::p_int32, false, &gray_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t546("t546", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::var("gray_s0_x"), ((tiramisu::var("input_min_0") + tiramisu::expr(input_extent_0)) + tiramisu::expr((int32_t)-1))), tiramisu::var("input_min_0")), tiramisu::p_int32, false, &gray_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t547("t547", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr((int32_t)2), ((tiramisu::var("input_min_2") + tiramisu::expr(input_extent_2)) + tiramisu::expr((int32_t)-1))), tiramisu::var("input_min_2")), tiramisu::p_int32, false, &gray_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t548("t548", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::var("gray_s0_y"), ((tiramisu::var("input_min_1") + tiramisu::expr(input_extent_1)) + tiramisu::expr((int32_t)-1))), tiramisu::var("input_min_1")), tiramisu::p_int32, false, &gray_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t549("t549", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::var("gray_s0_x"), ((tiramisu::var("input_min_0") + tiramisu::expr(input_extent_0)) + tiramisu::expr((int32_t)-1))), tiramisu::var("input_min_0")), tiramisu::p_int32, false, &gray_s0, 1, &laplacian_tiramisu);
    gray_s0.set_expression((((tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, input(t541, t542, t543)) * tiramisu::expr((float)4.56245e-06)) + (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, input(t544, t545, t546)) * tiramisu::expr((float)8.95705e-06))) + (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, input(t547, t548, t549)) * tiramisu::expr((float)1.73953e-06))));
    gray_s0.set_access("{gray_s0[gray_s0_y, gray_s0_x]->buff_gray[gray_s0_y, gray_s0_x]}");

    // Define compute order for constants of "gray_s0".
    t542.after(t541, computation::root);
    t543.after(t542, computation::root);
    t544.after(t543, computation::root);
    t545.after(t544, computation::root);
    t546.after(t545, computation::root);
    t547.after(t546, computation::root);
    t548.after(t547, computation::root);
    t549.after(t548, computation::root);

    // Define compute level for "gray".
    gray_s0.after(t549, computation::root);

    // Define temporary buffers for "gPyramid_1".
    tiramisu::buffer buff_gPyramid_1("buff_gPyramid_1", {((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr((float)0), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr((float)0), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1))), tiramisu::expr((int32_t)0)) - tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))), tiramisu::expr((float)0))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0))) + tiramisu::expr((int32_t)1)), (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)13)) / tiramisu::expr((int32_t)8))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)5)) / tiramisu::expr((int32_t)4))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)1)) / tiramisu::expr((int32_t)2))), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)-1)) / tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)192)), (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)13)) / tiramisu::expr((int32_t)8))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)5)) / tiramisu::expr((int32_t)4))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)1)) / tiramisu::expr((int32_t)2))), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)-1)) / tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)192))}, tiramisu::p_float32, tiramisu::a_temporary, &laplacian_tiramisu);

    // Define store level for "buff_gPyramid_1".

    // Define loop bounds for dimension "gPyramid_1_s0_k".
    tiramisu::constant gPyramid_1_s0_k_loop_min("gPyramid_1_s0_k_loop_min", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))), tiramisu::expr((float)0))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant gPyramid_1_s0_k_loop_extent("gPyramid_1_s0_k_loop_extent", ((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr((float)0), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) - tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))), tiramisu::expr((float)0))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0))) + tiramisu::expr((int32_t)2)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);

    // Define loop bounds for dimension "gPyramid_1_s0_y".
    tiramisu::constant gPyramid_1_s0_y_loop_min("gPyramid_1_s0_y_loop_min", tiramisu::expr((int32_t)-191), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant gPyramid_1_s0_y_loop_extent("gPyramid_1_s0_y_loop_extent", (tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)13)) / tiramisu::expr((int32_t)8))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)5)) / tiramisu::expr((int32_t)4))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)1)) / tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)192)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);

    // Define loop bounds for dimension "gPyramid_1_s0_x".
    tiramisu::constant gPyramid_1_s0_x_loop_min("gPyramid_1_s0_x_loop_min", tiramisu::expr((int32_t)-191), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant gPyramid_1_s0_x_loop_extent("gPyramid_1_s0_x_loop_extent", (tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)13)) / tiramisu::expr((int32_t)8))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)5)) / tiramisu::expr((int32_t)4))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)1)) / tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)192)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::computation gPyramid_1_s0(
        "[gPyramid_1_s0_k_loop_min, gPyramid_1_s0_k_loop_extent, gPyramid_1_s0_y_loop_min, gPyramid_1_s0_y_loop_extent, gPyramid_1_s0_x_loop_min, gPyramid_1_s0_x_loop_extent]->{gPyramid_1_s0[gPyramid_1_s0_k, gPyramid_1_s0_y, gPyramid_1_s0_x]: "
        "(gPyramid_1_s0_k_loop_min <= gPyramid_1_s0_k <= ((gPyramid_1_s0_k_loop_min + gPyramid_1_s0_k_loop_extent) + -1)) and (gPyramid_1_s0_y_loop_min <= gPyramid_1_s0_y <= ((gPyramid_1_s0_y_loop_min + gPyramid_1_s0_y_loop_extent) + -1)) and (gPyramid_1_s0_x_loop_min <= gPyramid_1_s0_x <= ((gPyramid_1_s0_x_loop_min + gPyramid_1_s0_x_loop_extent) + -1))}",
        tiramisu::expr(), true, tiramisu::p_float32, &laplacian_tiramisu);
    tiramisu::constant t550("t550", (tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t551("t551", (tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t552("t552", (tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t553("t553", (tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t554("t554", (tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t555("t555", (tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t556("t556", (tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t557("t557", (tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t558("t558", (tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t559("t559", (tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t560("t560", (tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t561("t561", (tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t562("t562", (tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t563("t563", (tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t564("t564", (tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t565("t565", (tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t566("t566", (tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t567("t567", (tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t568("t568", (tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t569("t569", (tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t570("t570", (tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t571("t571", (tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t572("t572", (tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t573("t573", (tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t574("t574", (tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t575("t575", (tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t576("t576", (tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t577("t577", (tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t578("t578", (tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t579("t579", (tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t580("t580", (tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t581("t581", (tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_1_s0, 1, &laplacian_tiramisu);
    gPyramid_1_s0.set_expression((((((((((tiramisu::expr(beta) * (gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::var("gPyramid_1_s0_k")) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))))) + (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::var("gPyramid_1_s0_k")) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))))) + (((tiramisu::expr(alpha) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00390625)) * tiramisu::expr(o_expo, (((tiramisu::expr((float)0) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256)))) * tiramisu::expr((float)0.00390625))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00195312))))) + (((((tiramisu::expr(beta) * (gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), t550) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::var("gPyramid_1_s0_k")) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))))) + (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::var("gPyramid_1_s0_k")) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))))) + (((tiramisu::expr(alpha) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), t551) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00390625)) * tiramisu::expr(o_expo, (((tiramisu::expr((float)0) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), t552) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256)))) * tiramisu::expr((float)0.00390625))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), t553) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00195312))))) + (((tiramisu::expr(beta) * (gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1))) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::var("gPyramid_1_s0_k")) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))))) + (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::var("gPyramid_1_s0_k")) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))))) + (((tiramisu::expr(alpha) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00390625)) * tiramisu::expr(o_expo, (((tiramisu::expr((float)0) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256)))) * tiramisu::expr((float)0.00390625))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00195312)))))) * tiramisu::expr((float)3))) + (((tiramisu::expr(beta) * (gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2))) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::var("gPyramid_1_s0_k")) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))))) + (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::var("gPyramid_1_s0_k")) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))))) + (((tiramisu::expr(alpha) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00390625)) * tiramisu::expr(o_expo, (((tiramisu::expr((float)0) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256)))) * tiramisu::expr((float)0.00390625))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00195312)))))) * tiramisu::expr((float)0.125)) + (((((((tiramisu::expr(beta) * (gray_s0(t554, ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::var("gPyramid_1_s0_k")) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))))) + (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::var("gPyramid_1_s0_k")) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))))) + (((tiramisu::expr(alpha) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(t555, ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00390625)) * tiramisu::expr(o_expo, (((tiramisu::expr((float)0) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(t556, ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256)))) * tiramisu::expr((float)0.00390625))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(t557, ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00195312))))) + (((((tiramisu::expr(beta) * (gray_s0(t558, t559) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::var("gPyramid_1_s0_k")) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))))) + (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::var("gPyramid_1_s0_k")) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))))) + (((tiramisu::expr(alpha) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(t560, t561) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00390625)) * tiramisu::expr(o_expo, (((tiramisu::expr((float)0) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(t562, t563) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256)))) * tiramisu::expr((float)0.00390625))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(t564, t565) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00195312))))) + (((tiramisu::expr(beta) * (gray_s0(t566, ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1))) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::var("gPyramid_1_s0_k")) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))))) + (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::var("gPyramid_1_s0_k")) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))))) + (((tiramisu::expr(alpha) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(t567, ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00390625)) * tiramisu::expr(o_expo, (((tiramisu::expr((float)0) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(t568, ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256)))) * tiramisu::expr((float)0.00390625))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(t569, ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00195312)))))) * tiramisu::expr((float)3))) + (((tiramisu::expr(beta) * (gray_s0(t570, ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2))) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::var("gPyramid_1_s0_k")) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))))) + (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::var("gPyramid_1_s0_k")) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))))) + (((tiramisu::expr(alpha) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(t571, ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00390625)) * tiramisu::expr(o_expo, (((tiramisu::expr((float)0) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(t572, ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256)))) * tiramisu::expr((float)0.00390625))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(t573, ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00195312)))))) + (((((tiramisu::expr(beta) * (gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::var("gPyramid_1_s0_k")) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))))) + (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::var("gPyramid_1_s0_k")) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))))) + (((tiramisu::expr(alpha) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00390625)) * tiramisu::expr(o_expo, (((tiramisu::expr((float)0) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256)))) * tiramisu::expr((float)0.00390625))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00195312))))) + (((((tiramisu::expr(beta) * (gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), t574) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::var("gPyramid_1_s0_k")) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))))) + (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::var("gPyramid_1_s0_k")) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))))) + (((tiramisu::expr(alpha) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), t575) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00390625)) * tiramisu::expr(o_expo, (((tiramisu::expr((float)0) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), t576) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256)))) * tiramisu::expr((float)0.00390625))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), t577) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00195312))))) + (((tiramisu::expr(beta) * (gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1))) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::var("gPyramid_1_s0_k")) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))))) + (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::var("gPyramid_1_s0_k")) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))))) + (((tiramisu::expr(alpha) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00390625)) * tiramisu::expr(o_expo, (((tiramisu::expr((float)0) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256)))) * tiramisu::expr((float)0.00390625))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00195312)))))) * tiramisu::expr((float)3))) + (((tiramisu::expr(beta) * (gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2))) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::var("gPyramid_1_s0_k")) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))))) + (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::var("gPyramid_1_s0_k")) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))))) + (((tiramisu::expr(alpha) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00390625)) * tiramisu::expr(o_expo, (((tiramisu::expr((float)0) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256)))) * tiramisu::expr((float)0.00390625))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00195312))))))) * tiramisu::expr((float)0.375))) + ((((((tiramisu::expr(beta) * (gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::var("gPyramid_1_s0_k")) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))))) + (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::var("gPyramid_1_s0_k")) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))))) + (((tiramisu::expr(alpha) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00390625)) * tiramisu::expr(o_expo, (((tiramisu::expr((float)0) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256)))) * tiramisu::expr((float)0.00390625))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00195312))))) + (((((tiramisu::expr(beta) * (gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), t578) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::var("gPyramid_1_s0_k")) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))))) + (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::var("gPyramid_1_s0_k")) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))))) + (((tiramisu::expr(alpha) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), t579) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00390625)) * tiramisu::expr(o_expo, (((tiramisu::expr((float)0) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), t580) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256)))) * tiramisu::expr((float)0.00390625))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), t581) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00195312))))) + (((tiramisu::expr(beta) * (gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1))) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::var("gPyramid_1_s0_k")) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))))) + (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::var("gPyramid_1_s0_k")) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))))) + (((tiramisu::expr(alpha) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00390625)) * tiramisu::expr(o_expo, (((tiramisu::expr((float)0) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256)))) * tiramisu::expr((float)0.00390625))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00195312)))))) * tiramisu::expr((float)3))) + (((tiramisu::expr(beta) * (gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2))) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::var("gPyramid_1_s0_k")) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))))) + (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::var("gPyramid_1_s0_k")) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))))) + (((tiramisu::expr(alpha) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00390625)) * tiramisu::expr(o_expo, (((tiramisu::expr((float)0) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256)))) * tiramisu::expr((float)0.00390625))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(((tiramisu::var("gPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("gPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::var("gPyramid_1_s0_k") * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00195312)))))) * tiramisu::expr((float)0.125))) * tiramisu::expr((float)0.125)));
    gPyramid_1_s0.set_access("{gPyramid_1_s0[gPyramid_1_s0_k, gPyramid_1_s0_y, gPyramid_1_s0_x]->buff_gPyramid_1[gPyramid_1_s0_k, gPyramid_1_s0_y, gPyramid_1_s0_x]}");

    // Define compute order for constants of "gPyramid_1_s0".
    t550.after(gray_s0, gray_s0.get_loop_level_number_from_dimension_name("gray_s0_x"));
    t551.after(t550, gray_s0.get_loop_level_number_from_dimension_name("gray_s0_x"));
    t552.after(t551, gray_s0.get_loop_level_number_from_dimension_name("gray_s0_x"));
    t553.after(t552, gray_s0.get_loop_level_number_from_dimension_name("gray_s0_x"));
    t554.after(t553, gray_s0.get_loop_level_number_from_dimension_name("gray_s0_x"));
    t555.after(t554, gray_s0.get_loop_level_number_from_dimension_name("gray_s0_x"));
    t556.after(t555, gray_s0.get_loop_level_number_from_dimension_name("gray_s0_x"));
    t557.after(t556, gray_s0.get_loop_level_number_from_dimension_name("gray_s0_x"));
    t558.after(t557, gray_s0.get_loop_level_number_from_dimension_name("gray_s0_x"));
    t559.after(t558, gray_s0.get_loop_level_number_from_dimension_name("gray_s0_x"));
    t560.after(t559, gray_s0.get_loop_level_number_from_dimension_name("gray_s0_x"));
    t561.after(t560, gray_s0.get_loop_level_number_from_dimension_name("gray_s0_x"));
    t562.after(t561, gray_s0.get_loop_level_number_from_dimension_name("gray_s0_x"));
    t563.after(t562, gray_s0.get_loop_level_number_from_dimension_name("gray_s0_x"));
    t564.after(t563, gray_s0.get_loop_level_number_from_dimension_name("gray_s0_x"));
    t565.after(t564, gray_s0.get_loop_level_number_from_dimension_name("gray_s0_x"));
    t566.after(t565, gray_s0.get_loop_level_number_from_dimension_name("gray_s0_x"));
    t567.after(t566, gray_s0.get_loop_level_number_from_dimension_name("gray_s0_x"));
    t568.after(t567, gray_s0.get_loop_level_number_from_dimension_name("gray_s0_x"));
    t569.after(t568, gray_s0.get_loop_level_number_from_dimension_name("gray_s0_x"));
    t570.after(t569, gray_s0.get_loop_level_number_from_dimension_name("gray_s0_x"));
    t571.after(t570, gray_s0.get_loop_level_number_from_dimension_name("gray_s0_x"));
    t572.after(t571, gray_s0.get_loop_level_number_from_dimension_name("gray_s0_x"));
    t573.after(t572, gray_s0.get_loop_level_number_from_dimension_name("gray_s0_x"));
    t574.after(t573, gray_s0.get_loop_level_number_from_dimension_name("gray_s0_x"));
    t575.after(t574, gray_s0.get_loop_level_number_from_dimension_name("gray_s0_x"));
    t576.after(t575, gray_s0.get_loop_level_number_from_dimension_name("gray_s0_x"));
    t577.after(t576, gray_s0.get_loop_level_number_from_dimension_name("gray_s0_x"));
    t578.after(t577, gray_s0.get_loop_level_number_from_dimension_name("gray_s0_x"));
    t579.after(t578, gray_s0.get_loop_level_number_from_dimension_name("gray_s0_x"));
    t580.after(t579, gray_s0.get_loop_level_number_from_dimension_name("gray_s0_x"));
    t581.after(t580, gray_s0.get_loop_level_number_from_dimension_name("gray_s0_x"));

    // Define compute level for "gPyramid_1".
    gPyramid_1_s0.after(t581, gray_s0.get_loop_level_number_from_dimension_name("gray_s0_x"));

    // Define temporary buffers for "inGPyramid_1".
    tiramisu::buffer buff_inGPyramid_1("buff_inGPyramid_1", {(tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)13)) / tiramisu::expr((int32_t)8))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)5)) / tiramisu::expr((int32_t)4))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)1)) / tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)192)), (tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)13)) / tiramisu::expr((int32_t)8))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)5)) / tiramisu::expr((int32_t)4))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)1)) / tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)192))}, tiramisu::p_float32, tiramisu::a_temporary, &laplacian_tiramisu);

    // Define store level for "buff_inGPyramid_1".

    // Define loop bounds for dimension "inGPyramid_1_s0_y".
    tiramisu::constant inGPyramid_1_s0_y_loop_min("inGPyramid_1_s0_y_loop_min", tiramisu::expr((int32_t)-191), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant inGPyramid_1_s0_y_loop_extent("inGPyramid_1_s0_y_loop_extent", (tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)13)) / tiramisu::expr((int32_t)8))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)5)) / tiramisu::expr((int32_t)4))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)1)) / tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)192)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);

    // Define loop bounds for dimension "inGPyramid_1_s0_x".
    tiramisu::constant inGPyramid_1_s0_x_loop_min("inGPyramid_1_s0_x_loop_min", tiramisu::expr((int32_t)-191), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant inGPyramid_1_s0_x_loop_extent("inGPyramid_1_s0_x_loop_extent", (tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)13)) / tiramisu::expr((int32_t)8))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)5)) / tiramisu::expr((int32_t)4))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)1)) / tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)192)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::computation inGPyramid_1_s0(
        "[inGPyramid_1_s0_y_loop_min, inGPyramid_1_s0_y_loop_extent, inGPyramid_1_s0_x_loop_min, inGPyramid_1_s0_x_loop_extent]->{inGPyramid_1_s0[inGPyramid_1_s0_y, inGPyramid_1_s0_x]: "
        "(inGPyramid_1_s0_y_loop_min <= inGPyramid_1_s0_y <= ((inGPyramid_1_s0_y_loop_min + inGPyramid_1_s0_y_loop_extent) + -1)) and (inGPyramid_1_s0_x_loop_min <= inGPyramid_1_s0_x <= ((inGPyramid_1_s0_x_loop_min + inGPyramid_1_s0_x_loop_extent) + -1))}",
        tiramisu::expr(), true, tiramisu::p_float32, &laplacian_tiramisu);
    tiramisu::constant t582("t582", (tiramisu::var("inGPyramid_1_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t583("t583", (tiramisu::var("inGPyramid_1_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t584("t584", (tiramisu::var("inGPyramid_1_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t585("t585", (tiramisu::var("inGPyramid_1_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t586("t586", (tiramisu::var("inGPyramid_1_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t587("t587", (tiramisu::var("inGPyramid_1_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t588("t588", (tiramisu::var("inGPyramid_1_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t589("t589", (tiramisu::var("inGPyramid_1_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_1_s0, 1, &laplacian_tiramisu);
    inGPyramid_1_s0.set_expression(((((((gray_s0(((tiramisu::var("inGPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("inGPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((gray_s0(((tiramisu::var("inGPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), t582) + gray_s0(((tiramisu::var("inGPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("inGPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + gray_s0(((tiramisu::var("inGPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("inGPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) * tiramisu::expr((float)0.125)) + ((((gray_s0(t583, ((tiramisu::var("inGPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((gray_s0(t584, t585) + gray_s0(t586, ((tiramisu::var("inGPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + gray_s0(t587, ((tiramisu::var("inGPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) + ((gray_s0(((tiramisu::var("inGPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("inGPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((gray_s0(((tiramisu::var("inGPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), t588) + gray_s0(((tiramisu::var("inGPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("inGPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + gray_s0(((tiramisu::var("inGPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("inGPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2))))) * tiramisu::expr((float)0.375))) + (((gray_s0(((tiramisu::var("inGPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("inGPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((gray_s0(((tiramisu::var("inGPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), t589) + gray_s0(((tiramisu::var("inGPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("inGPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + gray_s0(((tiramisu::var("inGPyramid_1_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("inGPyramid_1_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) * tiramisu::expr((float)0.125))) * tiramisu::expr((float)0.125)));
    inGPyramid_1_s0.set_access("{inGPyramid_1_s0[inGPyramid_1_s0_y, inGPyramid_1_s0_x]->buff_inGPyramid_1[inGPyramid_1_s0_y, inGPyramid_1_s0_x]}");

    // Define compute order for constants of "inGPyramid_1_s0".
    t582.after(t581, t581.get_loop_level_number_from_dimension_name("gPyramid_1_s0_x"));
    t583.after(t582, t581.get_loop_level_number_from_dimension_name("gPyramid_1_s0_x"));
    t584.after(t583, t581.get_loop_level_number_from_dimension_name("gPyramid_1_s0_x"));
    t585.after(t584, t581.get_loop_level_number_from_dimension_name("gPyramid_1_s0_x"));
    t586.after(t585, t581.get_loop_level_number_from_dimension_name("gPyramid_1_s0_x"));
    t587.after(t586, t581.get_loop_level_number_from_dimension_name("gPyramid_1_s0_x"));
    t588.after(t587, t581.get_loop_level_number_from_dimension_name("gPyramid_1_s0_x"));
    t589.after(t588, t581.get_loop_level_number_from_dimension_name("gPyramid_1_s0_x"));

    // Define compute level for "inGPyramid_1".
    inGPyramid_1_s0.after(t589, t581.get_loop_level_number_from_dimension_name("gPyramid_1_s0_x"));

    // Define temporary buffers for "gPyramid_2".
    tiramisu::buffer buff_gPyramid_2("buff_gPyramid_2", {((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr((float)0), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr((float)0), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1))), tiramisu::expr((int32_t)0)) - tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))), tiramisu::expr((float)0))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0))) + tiramisu::expr((int32_t)1)), (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)13)) / tiramisu::expr((int32_t)8))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)5)) / tiramisu::expr((int32_t)4))), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)1)) / tiramisu::expr((int32_t)4))) + tiramisu::expr((int32_t)96)), (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)13)) / tiramisu::expr((int32_t)8))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)5)) / tiramisu::expr((int32_t)4))), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)1)) / tiramisu::expr((int32_t)4))) + tiramisu::expr((int32_t)96))}, tiramisu::p_float32, tiramisu::a_temporary, &laplacian_tiramisu);

    // Define store level for "buff_gPyramid_2".

    // Define loop bounds for dimension "gPyramid_2_s0_k".
    tiramisu::constant gPyramid_2_s0_k_loop_min("gPyramid_2_s0_k_loop_min", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))), tiramisu::expr((float)0))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant gPyramid_2_s0_k_loop_extent("gPyramid_2_s0_k_loop_extent", ((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr((float)0), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) - tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))), tiramisu::expr((float)0))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0))) + tiramisu::expr((int32_t)2)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);

    // Define loop bounds for dimension "gPyramid_2_s0_y".
    tiramisu::constant gPyramid_2_s0_y_loop_min("gPyramid_2_s0_y_loop_min", tiramisu::expr((int32_t)-95), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant gPyramid_2_s0_y_loop_extent("gPyramid_2_s0_y_loop_extent", (tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)13)) / tiramisu::expr((int32_t)8))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)5)) / tiramisu::expr((int32_t)4))) + tiramisu::expr((int32_t)96)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);

    // Define loop bounds for dimension "gPyramid_2_s0_x".
    tiramisu::constant gPyramid_2_s0_x_loop_min("gPyramid_2_s0_x_loop_min", tiramisu::expr((int32_t)-95), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant gPyramid_2_s0_x_loop_extent("gPyramid_2_s0_x_loop_extent", (tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)13)) / tiramisu::expr((int32_t)8))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)5)) / tiramisu::expr((int32_t)4))) + tiramisu::expr((int32_t)96)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::computation gPyramid_2_s0(
        "[gPyramid_2_s0_k_loop_min, gPyramid_2_s0_k_loop_extent, gPyramid_2_s0_y_loop_min, gPyramid_2_s0_y_loop_extent, gPyramid_2_s0_x_loop_min, gPyramid_2_s0_x_loop_extent]->{gPyramid_2_s0[gPyramid_2_s0_k, gPyramid_2_s0_y, gPyramid_2_s0_x]: "
        "(gPyramid_2_s0_k_loop_min <= gPyramid_2_s0_k <= ((gPyramid_2_s0_k_loop_min + gPyramid_2_s0_k_loop_extent) + -1)) and (gPyramid_2_s0_y_loop_min <= gPyramid_2_s0_y <= ((gPyramid_2_s0_y_loop_min + gPyramid_2_s0_y_loop_extent) + -1)) and (gPyramid_2_s0_x_loop_min <= gPyramid_2_s0_x <= ((gPyramid_2_s0_x_loop_min + gPyramid_2_s0_x_loop_extent) + -1))}",
        tiramisu::expr(), true, tiramisu::p_float32, &laplacian_tiramisu);
    tiramisu::constant t590("t590", (tiramisu::var("gPyramid_2_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_2_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t591("t591", (tiramisu::var("gPyramid_2_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_2_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t592("t592", (tiramisu::var("gPyramid_2_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_2_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t593("t593", (tiramisu::var("gPyramid_2_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_2_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t594("t594", (tiramisu::var("gPyramid_2_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_2_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t595("t595", (tiramisu::var("gPyramid_2_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_2_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t596("t596", (tiramisu::var("gPyramid_2_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_2_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t597("t597", (tiramisu::var("gPyramid_2_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_2_s0, 1, &laplacian_tiramisu);
    gPyramid_2_s0.set_expression(((((((gPyramid_1_s0(tiramisu::var("gPyramid_2_s0_k"), ((tiramisu::var("gPyramid_2_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("gPyramid_2_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((gPyramid_1_s0(tiramisu::var("gPyramid_2_s0_k"), ((tiramisu::var("gPyramid_2_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), t590) + gPyramid_1_s0(tiramisu::var("gPyramid_2_s0_k"), ((tiramisu::var("gPyramid_2_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("gPyramid_2_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + gPyramid_1_s0(tiramisu::var("gPyramid_2_s0_k"), ((tiramisu::var("gPyramid_2_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("gPyramid_2_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) * tiramisu::expr((float)0.125)) + ((((gPyramid_1_s0(tiramisu::var("gPyramid_2_s0_k"), t591, ((tiramisu::var("gPyramid_2_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((gPyramid_1_s0(tiramisu::var("gPyramid_2_s0_k"), t592, t593) + gPyramid_1_s0(tiramisu::var("gPyramid_2_s0_k"), t594, ((tiramisu::var("gPyramid_2_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + gPyramid_1_s0(tiramisu::var("gPyramid_2_s0_k"), t595, ((tiramisu::var("gPyramid_2_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) + ((gPyramid_1_s0(tiramisu::var("gPyramid_2_s0_k"), ((tiramisu::var("gPyramid_2_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("gPyramid_2_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((gPyramid_1_s0(tiramisu::var("gPyramid_2_s0_k"), ((tiramisu::var("gPyramid_2_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), t596) + gPyramid_1_s0(tiramisu::var("gPyramid_2_s0_k"), ((tiramisu::var("gPyramid_2_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("gPyramid_2_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + gPyramid_1_s0(tiramisu::var("gPyramid_2_s0_k"), ((tiramisu::var("gPyramid_2_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("gPyramid_2_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2))))) * tiramisu::expr((float)0.375))) + (((gPyramid_1_s0(tiramisu::var("gPyramid_2_s0_k"), ((tiramisu::var("gPyramid_2_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("gPyramid_2_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((gPyramid_1_s0(tiramisu::var("gPyramid_2_s0_k"), ((tiramisu::var("gPyramid_2_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), t597) + gPyramid_1_s0(tiramisu::var("gPyramid_2_s0_k"), ((tiramisu::var("gPyramid_2_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("gPyramid_2_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + gPyramid_1_s0(tiramisu::var("gPyramid_2_s0_k"), ((tiramisu::var("gPyramid_2_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("gPyramid_2_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) * tiramisu::expr((float)0.125))) * tiramisu::expr((float)0.125)));
    gPyramid_2_s0.set_access("{gPyramid_2_s0[gPyramid_2_s0_k, gPyramid_2_s0_y, gPyramid_2_s0_x]->buff_gPyramid_2[gPyramid_2_s0_k, gPyramid_2_s0_y, gPyramid_2_s0_x]}");

    // Define compute order for constants of "gPyramid_2_s0".
    t590.after(t589, t589.get_loop_level_number_from_dimension_name("inGPyramid_1_s0_x"));
    t591.after(t590, t589.get_loop_level_number_from_dimension_name("inGPyramid_1_s0_x"));
    t592.after(t591, t589.get_loop_level_number_from_dimension_name("inGPyramid_1_s0_x"));
    t593.after(t592, t589.get_loop_level_number_from_dimension_name("inGPyramid_1_s0_x"));
    t594.after(t593, t589.get_loop_level_number_from_dimension_name("inGPyramid_1_s0_x"));
    t595.after(t594, t589.get_loop_level_number_from_dimension_name("inGPyramid_1_s0_x"));
    t596.after(t595, t589.get_loop_level_number_from_dimension_name("inGPyramid_1_s0_x"));
    t597.after(t596, t589.get_loop_level_number_from_dimension_name("inGPyramid_1_s0_x"));

    // Define compute level for "gPyramid_2".
    gPyramid_2_s0.after(t597, t589.get_loop_level_number_from_dimension_name("inGPyramid_1_s0_x"));

    // Define temporary buffers for "inGPyramid_2".
    tiramisu::buffer buff_inGPyramid_2("buff_inGPyramid_2", {(tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)13)) / tiramisu::expr((int32_t)8))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)5)) / tiramisu::expr((int32_t)4))) + tiramisu::expr((int32_t)96)), (tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)13)) / tiramisu::expr((int32_t)8))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)5)) / tiramisu::expr((int32_t)4))) + tiramisu::expr((int32_t)96))}, tiramisu::p_float32, tiramisu::a_temporary, &laplacian_tiramisu);

    // Define store level for "buff_inGPyramid_2".

    // Define loop bounds for dimension "inGPyramid_2_s0_y".
    tiramisu::constant inGPyramid_2_s0_y_loop_min("inGPyramid_2_s0_y_loop_min", tiramisu::expr((int32_t)-95), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant inGPyramid_2_s0_y_loop_extent("inGPyramid_2_s0_y_loop_extent", (tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)13)) / tiramisu::expr((int32_t)8))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)5)) / tiramisu::expr((int32_t)4))) + tiramisu::expr((int32_t)96)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);

    // Define loop bounds for dimension "inGPyramid_2_s0_x".
    tiramisu::constant inGPyramid_2_s0_x_loop_min("inGPyramid_2_s0_x_loop_min", tiramisu::expr((int32_t)-95), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant inGPyramid_2_s0_x_loop_extent("inGPyramid_2_s0_x_loop_extent", (tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)13)) / tiramisu::expr((int32_t)8))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)5)) / tiramisu::expr((int32_t)4))) + tiramisu::expr((int32_t)96)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::computation inGPyramid_2_s0(
        "[inGPyramid_2_s0_y_loop_min, inGPyramid_2_s0_y_loop_extent, inGPyramid_2_s0_x_loop_min, inGPyramid_2_s0_x_loop_extent]->{inGPyramid_2_s0[inGPyramid_2_s0_y, inGPyramid_2_s0_x]: "
        "(inGPyramid_2_s0_y_loop_min <= inGPyramid_2_s0_y <= ((inGPyramid_2_s0_y_loop_min + inGPyramid_2_s0_y_loop_extent) + -1)) and (inGPyramid_2_s0_x_loop_min <= inGPyramid_2_s0_x <= ((inGPyramid_2_s0_x_loop_min + inGPyramid_2_s0_x_loop_extent) + -1))}",
        tiramisu::expr(), true, tiramisu::p_float32, &laplacian_tiramisu);
    tiramisu::constant t598("t598", (tiramisu::var("inGPyramid_2_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_2_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t599("t599", (tiramisu::var("inGPyramid_2_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_2_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t600("t600", (tiramisu::var("inGPyramid_2_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_2_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t601("t601", (tiramisu::var("inGPyramid_2_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_2_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t602("t602", (tiramisu::var("inGPyramid_2_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_2_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t603("t603", (tiramisu::var("inGPyramid_2_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_2_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t604("t604", (tiramisu::var("inGPyramid_2_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_2_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t605("t605", (tiramisu::var("inGPyramid_2_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_2_s0, 1, &laplacian_tiramisu);
    inGPyramid_2_s0.set_expression(((((((inGPyramid_1_s0(((tiramisu::var("inGPyramid_2_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("inGPyramid_2_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((inGPyramid_1_s0(((tiramisu::var("inGPyramid_2_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), t598) + inGPyramid_1_s0(((tiramisu::var("inGPyramid_2_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("inGPyramid_2_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + inGPyramid_1_s0(((tiramisu::var("inGPyramid_2_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("inGPyramid_2_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) * tiramisu::expr((float)0.125)) + ((((inGPyramid_1_s0(t599, ((tiramisu::var("inGPyramid_2_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((inGPyramid_1_s0(t600, t601) + inGPyramid_1_s0(t602, ((tiramisu::var("inGPyramid_2_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + inGPyramid_1_s0(t603, ((tiramisu::var("inGPyramid_2_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) + ((inGPyramid_1_s0(((tiramisu::var("inGPyramid_2_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("inGPyramid_2_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((inGPyramid_1_s0(((tiramisu::var("inGPyramid_2_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), t604) + inGPyramid_1_s0(((tiramisu::var("inGPyramid_2_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("inGPyramid_2_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + inGPyramid_1_s0(((tiramisu::var("inGPyramid_2_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("inGPyramid_2_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2))))) * tiramisu::expr((float)0.375))) + (((inGPyramid_1_s0(((tiramisu::var("inGPyramid_2_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("inGPyramid_2_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((inGPyramid_1_s0(((tiramisu::var("inGPyramid_2_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), t605) + inGPyramid_1_s0(((tiramisu::var("inGPyramid_2_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("inGPyramid_2_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + inGPyramid_1_s0(((tiramisu::var("inGPyramid_2_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("inGPyramid_2_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) * tiramisu::expr((float)0.125))) * tiramisu::expr((float)0.125)));
    inGPyramid_2_s0.set_access("{inGPyramid_2_s0[inGPyramid_2_s0_y, inGPyramid_2_s0_x]->buff_inGPyramid_2[inGPyramid_2_s0_y, inGPyramid_2_s0_x]}");

    // Define compute order for constants of "inGPyramid_2_s0".
    t598.after(t597, t597.get_loop_level_number_from_dimension_name("gPyramid_2_s0_x"));
    t599.after(t598, t597.get_loop_level_number_from_dimension_name("gPyramid_2_s0_x"));
    t600.after(t599, t597.get_loop_level_number_from_dimension_name("gPyramid_2_s0_x"));
    t601.after(t600, t597.get_loop_level_number_from_dimension_name("gPyramid_2_s0_x"));
    t602.after(t601, t597.get_loop_level_number_from_dimension_name("gPyramid_2_s0_x"));
    t603.after(t602, t597.get_loop_level_number_from_dimension_name("gPyramid_2_s0_x"));
    t604.after(t603, t597.get_loop_level_number_from_dimension_name("gPyramid_2_s0_x"));
    t605.after(t604, t597.get_loop_level_number_from_dimension_name("gPyramid_2_s0_x"));

    // Define compute level for "inGPyramid_2".
    inGPyramid_2_s0.after(t605, t597.get_loop_level_number_from_dimension_name("gPyramid_2_s0_x"));

    // Define temporary buffers for "gPyramid_3".
    tiramisu::buffer buff_gPyramid_3("buff_gPyramid_3", {((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr((float)0), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr((float)0), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1))), tiramisu::expr((int32_t)0)) - tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))), tiramisu::expr((float)0))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0))) + tiramisu::expr((int32_t)1)), (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)13)) / tiramisu::expr((int32_t)8))), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)5)) / tiramisu::expr((int32_t)8))) + tiramisu::expr((int32_t)48)), (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)13)) / tiramisu::expr((int32_t)8))), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)5)) / tiramisu::expr((int32_t)8))) + tiramisu::expr((int32_t)48))}, tiramisu::p_float32, tiramisu::a_temporary, &laplacian_tiramisu);

    // Define store level for "buff_gPyramid_3".

    // Define loop bounds for dimension "gPyramid_3_s0_k".
    tiramisu::constant gPyramid_3_s0_k_loop_min("gPyramid_3_s0_k_loop_min", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))), tiramisu::expr((float)0))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant gPyramid_3_s0_k_loop_extent("gPyramid_3_s0_k_loop_extent", ((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr((float)0), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) - tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))), tiramisu::expr((float)0))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0))) + tiramisu::expr((int32_t)2)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);

    // Define loop bounds for dimension "gPyramid_3_s0_y".
    tiramisu::constant gPyramid_3_s0_y_loop_min("gPyramid_3_s0_y_loop_min", tiramisu::expr((int32_t)-47), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant gPyramid_3_s0_y_loop_extent("gPyramid_3_s0_y_loop_extent", (tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)13)) / tiramisu::expr((int32_t)8))) + tiramisu::expr((int32_t)48)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);

    // Define loop bounds for dimension "gPyramid_3_s0_x".
    tiramisu::constant gPyramid_3_s0_x_loop_min("gPyramid_3_s0_x_loop_min", tiramisu::expr((int32_t)-47), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant gPyramid_3_s0_x_loop_extent("gPyramid_3_s0_x_loop_extent", (tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)13)) / tiramisu::expr((int32_t)8))) + tiramisu::expr((int32_t)48)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::computation gPyramid_3_s0(
        "[gPyramid_3_s0_k_loop_min, gPyramid_3_s0_k_loop_extent, gPyramid_3_s0_y_loop_min, gPyramid_3_s0_y_loop_extent, gPyramid_3_s0_x_loop_min, gPyramid_3_s0_x_loop_extent]->{gPyramid_3_s0[gPyramid_3_s0_k, gPyramid_3_s0_y, gPyramid_3_s0_x]: "
        "(gPyramid_3_s0_k_loop_min <= gPyramid_3_s0_k <= ((gPyramid_3_s0_k_loop_min + gPyramid_3_s0_k_loop_extent) + -1)) and (gPyramid_3_s0_y_loop_min <= gPyramid_3_s0_y <= ((gPyramid_3_s0_y_loop_min + gPyramid_3_s0_y_loop_extent) + -1)) and (gPyramid_3_s0_x_loop_min <= gPyramid_3_s0_x <= ((gPyramid_3_s0_x_loop_min + gPyramid_3_s0_x_loop_extent) + -1))}",
        tiramisu::expr(), true, tiramisu::p_float32, &laplacian_tiramisu);
    tiramisu::constant t606("t606", (tiramisu::var("gPyramid_3_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_3_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t607("t607", (tiramisu::var("gPyramid_3_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_3_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t608("t608", (tiramisu::var("gPyramid_3_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_3_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t609("t609", (tiramisu::var("gPyramid_3_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_3_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t610("t610", (tiramisu::var("gPyramid_3_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_3_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t611("t611", (tiramisu::var("gPyramid_3_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_3_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t612("t612", (tiramisu::var("gPyramid_3_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_3_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t613("t613", (tiramisu::var("gPyramid_3_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_3_s0, 1, &laplacian_tiramisu);
    gPyramid_3_s0.set_expression(((((((gPyramid_2_s0(tiramisu::var("gPyramid_3_s0_k"), ((tiramisu::var("gPyramid_3_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("gPyramid_3_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((gPyramid_2_s0(tiramisu::var("gPyramid_3_s0_k"), ((tiramisu::var("gPyramid_3_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), t606) + gPyramid_2_s0(tiramisu::var("gPyramid_3_s0_k"), ((tiramisu::var("gPyramid_3_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("gPyramid_3_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + gPyramid_2_s0(tiramisu::var("gPyramid_3_s0_k"), ((tiramisu::var("gPyramid_3_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("gPyramid_3_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) * tiramisu::expr((float)0.125)) + ((((gPyramid_2_s0(tiramisu::var("gPyramid_3_s0_k"), t607, ((tiramisu::var("gPyramid_3_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((gPyramid_2_s0(tiramisu::var("gPyramid_3_s0_k"), t608, t609) + gPyramid_2_s0(tiramisu::var("gPyramid_3_s0_k"), t610, ((tiramisu::var("gPyramid_3_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + gPyramid_2_s0(tiramisu::var("gPyramid_3_s0_k"), t611, ((tiramisu::var("gPyramid_3_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) + ((gPyramid_2_s0(tiramisu::var("gPyramid_3_s0_k"), ((tiramisu::var("gPyramid_3_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("gPyramid_3_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((gPyramid_2_s0(tiramisu::var("gPyramid_3_s0_k"), ((tiramisu::var("gPyramid_3_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), t612) + gPyramid_2_s0(tiramisu::var("gPyramid_3_s0_k"), ((tiramisu::var("gPyramid_3_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("gPyramid_3_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + gPyramid_2_s0(tiramisu::var("gPyramid_3_s0_k"), ((tiramisu::var("gPyramid_3_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("gPyramid_3_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2))))) * tiramisu::expr((float)0.375))) + (((gPyramid_2_s0(tiramisu::var("gPyramid_3_s0_k"), ((tiramisu::var("gPyramid_3_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("gPyramid_3_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((gPyramid_2_s0(tiramisu::var("gPyramid_3_s0_k"), ((tiramisu::var("gPyramid_3_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), t613) + gPyramid_2_s0(tiramisu::var("gPyramid_3_s0_k"), ((tiramisu::var("gPyramid_3_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("gPyramid_3_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + gPyramid_2_s0(tiramisu::var("gPyramid_3_s0_k"), ((tiramisu::var("gPyramid_3_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("gPyramid_3_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) * tiramisu::expr((float)0.125))) * tiramisu::expr((float)0.125)));
    gPyramid_3_s0.set_access("{gPyramid_3_s0[gPyramid_3_s0_k, gPyramid_3_s0_y, gPyramid_3_s0_x]->buff_gPyramid_3[gPyramid_3_s0_k, gPyramid_3_s0_y, gPyramid_3_s0_x]}");

    // Define compute order for constants of "gPyramid_3_s0".
    t606.after(t605, t605.get_loop_level_number_from_dimension_name("inGPyramid_2_s0_x"));
    t607.after(t606, t605.get_loop_level_number_from_dimension_name("inGPyramid_2_s0_x"));
    t608.after(t607, t605.get_loop_level_number_from_dimension_name("inGPyramid_2_s0_x"));
    t609.after(t608, t605.get_loop_level_number_from_dimension_name("inGPyramid_2_s0_x"));
    t610.after(t609, t605.get_loop_level_number_from_dimension_name("inGPyramid_2_s0_x"));
    t611.after(t610, t605.get_loop_level_number_from_dimension_name("inGPyramid_2_s0_x"));
    t612.after(t611, t605.get_loop_level_number_from_dimension_name("inGPyramid_2_s0_x"));
    t613.after(t612, t605.get_loop_level_number_from_dimension_name("inGPyramid_2_s0_x"));

    // Define compute level for "gPyramid_3".
    gPyramid_3_s0.after(t613, t605.get_loop_level_number_from_dimension_name("inGPyramid_2_s0_x"));

    // Define temporary buffers for "inGPyramid_3".
    tiramisu::buffer buff_inGPyramid_3("buff_inGPyramid_3", {(tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)13)) / tiramisu::expr((int32_t)8))) + tiramisu::expr((int32_t)48)), (tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)13)) / tiramisu::expr((int32_t)8))) + tiramisu::expr((int32_t)48))}, tiramisu::p_float32, tiramisu::a_temporary, &laplacian_tiramisu);

    // Define store level for "buff_inGPyramid_3".

    // Define loop bounds for dimension "inGPyramid_3_s0_y".
    tiramisu::constant inGPyramid_3_s0_y_loop_min("inGPyramid_3_s0_y_loop_min", tiramisu::expr((int32_t)-47), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant inGPyramid_3_s0_y_loop_extent("inGPyramid_3_s0_y_loop_extent", (tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)13)) / tiramisu::expr((int32_t)8))) + tiramisu::expr((int32_t)48)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);

    // Define loop bounds for dimension "inGPyramid_3_s0_x".
    tiramisu::constant inGPyramid_3_s0_x_loop_min("inGPyramid_3_s0_x_loop_min", tiramisu::expr((int32_t)-47), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant inGPyramid_3_s0_x_loop_extent("inGPyramid_3_s0_x_loop_extent", (tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)13)) / tiramisu::expr((int32_t)8))) + tiramisu::expr((int32_t)48)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::computation inGPyramid_3_s0(
        "[inGPyramid_3_s0_y_loop_min, inGPyramid_3_s0_y_loop_extent, inGPyramid_3_s0_x_loop_min, inGPyramid_3_s0_x_loop_extent]->{inGPyramid_3_s0[inGPyramid_3_s0_y, inGPyramid_3_s0_x]: "
        "(inGPyramid_3_s0_y_loop_min <= inGPyramid_3_s0_y <= ((inGPyramid_3_s0_y_loop_min + inGPyramid_3_s0_y_loop_extent) + -1)) and (inGPyramid_3_s0_x_loop_min <= inGPyramid_3_s0_x <= ((inGPyramid_3_s0_x_loop_min + inGPyramid_3_s0_x_loop_extent) + -1))}",
        tiramisu::expr(), true, tiramisu::p_float32, &laplacian_tiramisu);
    tiramisu::constant t614("t614", (tiramisu::var("inGPyramid_3_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_3_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t615("t615", (tiramisu::var("inGPyramid_3_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_3_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t616("t616", (tiramisu::var("inGPyramid_3_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_3_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t617("t617", (tiramisu::var("inGPyramid_3_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_3_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t618("t618", (tiramisu::var("inGPyramid_3_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_3_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t619("t619", (tiramisu::var("inGPyramid_3_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_3_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t620("t620", (tiramisu::var("inGPyramid_3_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_3_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t621("t621", (tiramisu::var("inGPyramid_3_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_3_s0, 1, &laplacian_tiramisu);
    inGPyramid_3_s0.set_expression(((((((inGPyramid_2_s0(((tiramisu::var("inGPyramid_3_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("inGPyramid_3_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((inGPyramid_2_s0(((tiramisu::var("inGPyramid_3_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), t614) + inGPyramid_2_s0(((tiramisu::var("inGPyramid_3_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("inGPyramid_3_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + inGPyramid_2_s0(((tiramisu::var("inGPyramid_3_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("inGPyramid_3_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) * tiramisu::expr((float)0.125)) + ((((inGPyramid_2_s0(t615, ((tiramisu::var("inGPyramid_3_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((inGPyramid_2_s0(t616, t617) + inGPyramid_2_s0(t618, ((tiramisu::var("inGPyramid_3_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + inGPyramid_2_s0(t619, ((tiramisu::var("inGPyramid_3_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) + ((inGPyramid_2_s0(((tiramisu::var("inGPyramid_3_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("inGPyramid_3_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((inGPyramid_2_s0(((tiramisu::var("inGPyramid_3_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), t620) + inGPyramid_2_s0(((tiramisu::var("inGPyramid_3_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("inGPyramid_3_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + inGPyramid_2_s0(((tiramisu::var("inGPyramid_3_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("inGPyramid_3_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2))))) * tiramisu::expr((float)0.375))) + (((inGPyramid_2_s0(((tiramisu::var("inGPyramid_3_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("inGPyramid_3_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((inGPyramid_2_s0(((tiramisu::var("inGPyramid_3_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), t621) + inGPyramid_2_s0(((tiramisu::var("inGPyramid_3_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("inGPyramid_3_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + inGPyramid_2_s0(((tiramisu::var("inGPyramid_3_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("inGPyramid_3_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) * tiramisu::expr((float)0.125))) * tiramisu::expr((float)0.125)));
    inGPyramid_3_s0.set_access("{inGPyramid_3_s0[inGPyramid_3_s0_y, inGPyramid_3_s0_x]->buff_inGPyramid_3[inGPyramid_3_s0_y, inGPyramid_3_s0_x]}");

    // Define compute order for constants of "inGPyramid_3_s0".
    t614.after(t613, t613.get_loop_level_number_from_dimension_name("gPyramid_3_s0_x"));
    t615.after(t614, t613.get_loop_level_number_from_dimension_name("gPyramid_3_s0_x"));
    t616.after(t615, t613.get_loop_level_number_from_dimension_name("gPyramid_3_s0_x"));
    t617.after(t616, t613.get_loop_level_number_from_dimension_name("gPyramid_3_s0_x"));
    t618.after(t617, t613.get_loop_level_number_from_dimension_name("gPyramid_3_s0_x"));
    t619.after(t618, t613.get_loop_level_number_from_dimension_name("gPyramid_3_s0_x"));
    t620.after(t619, t613.get_loop_level_number_from_dimension_name("gPyramid_3_s0_x"));
    t621.after(t620, t613.get_loop_level_number_from_dimension_name("gPyramid_3_s0_x"));

    // Define compute level for "inGPyramid_3".
    inGPyramid_3_s0.after(t621, t613.get_loop_level_number_from_dimension_name("gPyramid_3_s0_x"));

    // Define temporary buffers for "gPyramid_4".
    tiramisu::buffer buff_gPyramid_4("buff_gPyramid_4", {((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr((float)0), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr((float)0), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1))), tiramisu::expr((int32_t)0)) - tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))), tiramisu::expr((float)0))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0))) + tiramisu::expr((int32_t)1)), (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)13)) / tiramisu::expr((int32_t)16))) + tiramisu::expr((int32_t)24)), (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)13)) / tiramisu::expr((int32_t)16))) + tiramisu::expr((int32_t)24))}, tiramisu::p_float32, tiramisu::a_temporary, &laplacian_tiramisu);

    // Define store level for "buff_gPyramid_4".

    // Define loop bounds for dimension "gPyramid_4_s0_k".
    tiramisu::constant gPyramid_4_s0_k_loop_min("gPyramid_4_s0_k_loop_min", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))), tiramisu::expr((float)0))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant gPyramid_4_s0_k_loop_extent("gPyramid_4_s0_k_loop_extent", ((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr((float)0), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) - tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))), tiramisu::expr((float)0))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0))) + tiramisu::expr((int32_t)2)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);

    // Define loop bounds for dimension "gPyramid_4_s0_y".
    tiramisu::constant gPyramid_4_s0_y_loop_min("gPyramid_4_s0_y_loop_min", tiramisu::expr((int32_t)-23), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant gPyramid_4_s0_y_loop_extent("gPyramid_4_s0_y_loop_extent", (tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) + tiramisu::expr((int32_t)24)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);

    // Define loop bounds for dimension "gPyramid_4_s0_x".
    tiramisu::constant gPyramid_4_s0_x_loop_min("gPyramid_4_s0_x_loop_min", tiramisu::expr((int32_t)-23), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant gPyramid_4_s0_x_loop_extent("gPyramid_4_s0_x_loop_extent", (tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) + tiramisu::expr((int32_t)24)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::computation gPyramid_4_s0(
        "[gPyramid_4_s0_k_loop_min, gPyramid_4_s0_k_loop_extent, gPyramid_4_s0_y_loop_min, gPyramid_4_s0_y_loop_extent, gPyramid_4_s0_x_loop_min, gPyramid_4_s0_x_loop_extent]->{gPyramid_4_s0[gPyramid_4_s0_k, gPyramid_4_s0_y, gPyramid_4_s0_x]: "
        "(gPyramid_4_s0_k_loop_min <= gPyramid_4_s0_k <= ((gPyramid_4_s0_k_loop_min + gPyramid_4_s0_k_loop_extent) + -1)) and (gPyramid_4_s0_y_loop_min <= gPyramid_4_s0_y <= ((gPyramid_4_s0_y_loop_min + gPyramid_4_s0_y_loop_extent) + -1)) and (gPyramid_4_s0_x_loop_min <= gPyramid_4_s0_x <= ((gPyramid_4_s0_x_loop_min + gPyramid_4_s0_x_loop_extent) + -1))}",
        tiramisu::expr(), true, tiramisu::p_float32, &laplacian_tiramisu);
    tiramisu::constant t622("t622", (tiramisu::var("gPyramid_4_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_4_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t623("t623", (tiramisu::var("gPyramid_4_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_4_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t624("t624", (tiramisu::var("gPyramid_4_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_4_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t625("t625", (tiramisu::var("gPyramid_4_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_4_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t626("t626", (tiramisu::var("gPyramid_4_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_4_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t627("t627", (tiramisu::var("gPyramid_4_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_4_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t628("t628", (tiramisu::var("gPyramid_4_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_4_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t629("t629", (tiramisu::var("gPyramid_4_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_4_s0, 1, &laplacian_tiramisu);
    gPyramid_4_s0.set_expression(((((((gPyramid_3_s0(tiramisu::var("gPyramid_4_s0_k"), ((tiramisu::var("gPyramid_4_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("gPyramid_4_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((gPyramid_3_s0(tiramisu::var("gPyramid_4_s0_k"), ((tiramisu::var("gPyramid_4_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), t622) + gPyramid_3_s0(tiramisu::var("gPyramid_4_s0_k"), ((tiramisu::var("gPyramid_4_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("gPyramid_4_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + gPyramid_3_s0(tiramisu::var("gPyramid_4_s0_k"), ((tiramisu::var("gPyramid_4_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("gPyramid_4_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) * tiramisu::expr((float)0.125)) + ((((gPyramid_3_s0(tiramisu::var("gPyramid_4_s0_k"), t623, ((tiramisu::var("gPyramid_4_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((gPyramid_3_s0(tiramisu::var("gPyramid_4_s0_k"), t624, t625) + gPyramid_3_s0(tiramisu::var("gPyramid_4_s0_k"), t626, ((tiramisu::var("gPyramid_4_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + gPyramid_3_s0(tiramisu::var("gPyramid_4_s0_k"), t627, ((tiramisu::var("gPyramid_4_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) + ((gPyramid_3_s0(tiramisu::var("gPyramid_4_s0_k"), ((tiramisu::var("gPyramid_4_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("gPyramid_4_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((gPyramid_3_s0(tiramisu::var("gPyramid_4_s0_k"), ((tiramisu::var("gPyramid_4_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), t628) + gPyramid_3_s0(tiramisu::var("gPyramid_4_s0_k"), ((tiramisu::var("gPyramid_4_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("gPyramid_4_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + gPyramid_3_s0(tiramisu::var("gPyramid_4_s0_k"), ((tiramisu::var("gPyramid_4_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("gPyramid_4_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2))))) * tiramisu::expr((float)0.375))) + (((gPyramid_3_s0(tiramisu::var("gPyramid_4_s0_k"), ((tiramisu::var("gPyramid_4_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("gPyramid_4_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((gPyramid_3_s0(tiramisu::var("gPyramid_4_s0_k"), ((tiramisu::var("gPyramid_4_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), t629) + gPyramid_3_s0(tiramisu::var("gPyramid_4_s0_k"), ((tiramisu::var("gPyramid_4_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("gPyramid_4_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + gPyramid_3_s0(tiramisu::var("gPyramid_4_s0_k"), ((tiramisu::var("gPyramid_4_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("gPyramid_4_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) * tiramisu::expr((float)0.125))) * tiramisu::expr((float)0.125)));
    gPyramid_4_s0.set_access("{gPyramid_4_s0[gPyramid_4_s0_k, gPyramid_4_s0_y, gPyramid_4_s0_x]->buff_gPyramid_4[gPyramid_4_s0_k, gPyramid_4_s0_y, gPyramid_4_s0_x]}");

    // Define compute order for constants of "gPyramid_4_s0".
    t622.after(t621, t621.get_loop_level_number_from_dimension_name("inGPyramid_3_s0_x"));
    t623.after(t622, t621.get_loop_level_number_from_dimension_name("inGPyramid_3_s0_x"));
    t624.after(t623, t621.get_loop_level_number_from_dimension_name("inGPyramid_3_s0_x"));
    t625.after(t624, t621.get_loop_level_number_from_dimension_name("inGPyramid_3_s0_x"));
    t626.after(t625, t621.get_loop_level_number_from_dimension_name("inGPyramid_3_s0_x"));
    t627.after(t626, t621.get_loop_level_number_from_dimension_name("inGPyramid_3_s0_x"));
    t628.after(t627, t621.get_loop_level_number_from_dimension_name("inGPyramid_3_s0_x"));
    t629.after(t628, t621.get_loop_level_number_from_dimension_name("inGPyramid_3_s0_x"));

    // Define compute level for "gPyramid_4".
    gPyramid_4_s0.after(t629, t621.get_loop_level_number_from_dimension_name("inGPyramid_3_s0_x"));

    // Define temporary buffers for "inGPyramid_4".
    tiramisu::buffer buff_inGPyramid_4("buff_inGPyramid_4", {(tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) + tiramisu::expr((int32_t)24)), (tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) + tiramisu::expr((int32_t)24))}, tiramisu::p_float32, tiramisu::a_temporary, &laplacian_tiramisu);

    // Define store level for "buff_inGPyramid_4".

    // Define loop bounds for dimension "inGPyramid_4_s0_y".
    tiramisu::constant inGPyramid_4_s0_y_loop_min("inGPyramid_4_s0_y_loop_min", tiramisu::expr((int32_t)-23), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant inGPyramid_4_s0_y_loop_extent("inGPyramid_4_s0_y_loop_extent", (tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) + tiramisu::expr((int32_t)24)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);

    // Define loop bounds for dimension "inGPyramid_4_s0_x".
    tiramisu::constant inGPyramid_4_s0_x_loop_min("inGPyramid_4_s0_x_loop_min", tiramisu::expr((int32_t)-23), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant inGPyramid_4_s0_x_loop_extent("inGPyramid_4_s0_x_loop_extent", (tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)16))) + tiramisu::expr((int32_t)24)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::computation inGPyramid_4_s0(
        "[inGPyramid_4_s0_y_loop_min, inGPyramid_4_s0_y_loop_extent, inGPyramid_4_s0_x_loop_min, inGPyramid_4_s0_x_loop_extent]->{inGPyramid_4_s0[inGPyramid_4_s0_y, inGPyramid_4_s0_x]: "
        "(inGPyramid_4_s0_y_loop_min <= inGPyramid_4_s0_y <= ((inGPyramid_4_s0_y_loop_min + inGPyramid_4_s0_y_loop_extent) + -1)) and (inGPyramid_4_s0_x_loop_min <= inGPyramid_4_s0_x <= ((inGPyramid_4_s0_x_loop_min + inGPyramid_4_s0_x_loop_extent) + -1))}",
        tiramisu::expr(), true, tiramisu::p_float32, &laplacian_tiramisu);
    tiramisu::constant t630("t630", (tiramisu::var("inGPyramid_4_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_4_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t631("t631", (tiramisu::var("inGPyramid_4_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_4_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t632("t632", (tiramisu::var("inGPyramid_4_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_4_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t633("t633", (tiramisu::var("inGPyramid_4_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_4_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t634("t634", (tiramisu::var("inGPyramid_4_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_4_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t635("t635", (tiramisu::var("inGPyramid_4_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_4_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t636("t636", (tiramisu::var("inGPyramid_4_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_4_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t637("t637", (tiramisu::var("inGPyramid_4_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_4_s0, 1, &laplacian_tiramisu);
    inGPyramid_4_s0.set_expression(((((((inGPyramid_3_s0(((tiramisu::var("inGPyramid_4_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("inGPyramid_4_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((inGPyramid_3_s0(((tiramisu::var("inGPyramid_4_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), t630) + inGPyramid_3_s0(((tiramisu::var("inGPyramid_4_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("inGPyramid_4_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + inGPyramid_3_s0(((tiramisu::var("inGPyramid_4_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("inGPyramid_4_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) * tiramisu::expr((float)0.125)) + ((((inGPyramid_3_s0(t631, ((tiramisu::var("inGPyramid_4_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((inGPyramid_3_s0(t632, t633) + inGPyramid_3_s0(t634, ((tiramisu::var("inGPyramid_4_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + inGPyramid_3_s0(t635, ((tiramisu::var("inGPyramid_4_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) + ((inGPyramid_3_s0(((tiramisu::var("inGPyramid_4_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("inGPyramid_4_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((inGPyramid_3_s0(((tiramisu::var("inGPyramid_4_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), t636) + inGPyramid_3_s0(((tiramisu::var("inGPyramid_4_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("inGPyramid_4_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + inGPyramid_3_s0(((tiramisu::var("inGPyramid_4_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("inGPyramid_4_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2))))) * tiramisu::expr((float)0.375))) + (((inGPyramid_3_s0(((tiramisu::var("inGPyramid_4_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("inGPyramid_4_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((inGPyramid_3_s0(((tiramisu::var("inGPyramid_4_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), t637) + inGPyramid_3_s0(((tiramisu::var("inGPyramid_4_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("inGPyramid_4_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + inGPyramid_3_s0(((tiramisu::var("inGPyramid_4_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("inGPyramid_4_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) * tiramisu::expr((float)0.125))) * tiramisu::expr((float)0.125)));
    inGPyramid_4_s0.set_access("{inGPyramid_4_s0[inGPyramid_4_s0_y, inGPyramid_4_s0_x]->buff_inGPyramid_4[inGPyramid_4_s0_y, inGPyramid_4_s0_x]}");

    // Define compute order for constants of "inGPyramid_4_s0".
    t630.after(t629, t629.get_loop_level_number_from_dimension_name("gPyramid_4_s0_x"));
    t631.after(t630, t629.get_loop_level_number_from_dimension_name("gPyramid_4_s0_x"));
    t632.after(t631, t629.get_loop_level_number_from_dimension_name("gPyramid_4_s0_x"));
    t633.after(t632, t629.get_loop_level_number_from_dimension_name("gPyramid_4_s0_x"));
    t634.after(t633, t629.get_loop_level_number_from_dimension_name("gPyramid_4_s0_x"));
    t635.after(t634, t629.get_loop_level_number_from_dimension_name("gPyramid_4_s0_x"));
    t636.after(t635, t629.get_loop_level_number_from_dimension_name("gPyramid_4_s0_x"));
    t637.after(t636, t629.get_loop_level_number_from_dimension_name("gPyramid_4_s0_x"));

    // Define compute level for "inGPyramid_4".
    inGPyramid_4_s0.after(t637, t629.get_loop_level_number_from_dimension_name("gPyramid_4_s0_x"));

    // Define temporary buffers for "gPyramid_5".
    tiramisu::buffer buff_gPyramid_5("buff_gPyramid_5", {((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr((float)0), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr((float)0), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1))), tiramisu::expr((int32_t)0)) - tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))), tiramisu::expr((float)0))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0))) + tiramisu::expr((int32_t)1)), (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)32))) + tiramisu::expr((int32_t)12)), (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)29)) / tiramisu::expr((int32_t)32))) + tiramisu::expr((int32_t)12))}, tiramisu::p_float32, tiramisu::a_temporary, &laplacian_tiramisu);

    // Define store level for "buff_gPyramid_5".

    // Define loop bounds for dimension "gPyramid_5_s0_k".
    tiramisu::constant gPyramid_5_s0_k_loop_min("gPyramid_5_s0_k_loop_min", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))), tiramisu::expr((float)0))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant gPyramid_5_s0_k_loop_extent("gPyramid_5_s0_k_loop_extent", ((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr((float)0), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) - tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))), tiramisu::expr((float)0))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0))) + tiramisu::expr((int32_t)2)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);

    // Define loop bounds for dimension "gPyramid_5_s0_y".
    tiramisu::constant gPyramid_5_s0_y_loop_min("gPyramid_5_s0_y_loop_min", tiramisu::expr((int32_t)-11), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant gPyramid_5_s0_y_loop_extent("gPyramid_5_s0_y_loop_extent", (tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) + tiramisu::expr((int32_t)12)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);

    // Define loop bounds for dimension "gPyramid_5_s0_x".
    tiramisu::constant gPyramid_5_s0_x_loop_min("gPyramid_5_s0_x_loop_min", tiramisu::expr((int32_t)-11), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant gPyramid_5_s0_x_loop_extent("gPyramid_5_s0_x_loop_extent", (tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) + tiramisu::expr((int32_t)12)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::computation gPyramid_5_s0(
        "[gPyramid_5_s0_k_loop_min, gPyramid_5_s0_k_loop_extent, gPyramid_5_s0_y_loop_min, gPyramid_5_s0_y_loop_extent, gPyramid_5_s0_x_loop_min, gPyramid_5_s0_x_loop_extent]->{gPyramid_5_s0[gPyramid_5_s0_k, gPyramid_5_s0_y, gPyramid_5_s0_x]: "
        "(gPyramid_5_s0_k_loop_min <= gPyramid_5_s0_k <= ((gPyramid_5_s0_k_loop_min + gPyramid_5_s0_k_loop_extent) + -1)) and (gPyramid_5_s0_y_loop_min <= gPyramid_5_s0_y <= ((gPyramid_5_s0_y_loop_min + gPyramid_5_s0_y_loop_extent) + -1)) and (gPyramid_5_s0_x_loop_min <= gPyramid_5_s0_x <= ((gPyramid_5_s0_x_loop_min + gPyramid_5_s0_x_loop_extent) + -1))}",
        tiramisu::expr(), true, tiramisu::p_float32, &laplacian_tiramisu);
    tiramisu::constant t638("t638", (tiramisu::var("gPyramid_5_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_5_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t639("t639", (tiramisu::var("gPyramid_5_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_5_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t640("t640", (tiramisu::var("gPyramid_5_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_5_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t641("t641", (tiramisu::var("gPyramid_5_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_5_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t642("t642", (tiramisu::var("gPyramid_5_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_5_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t643("t643", (tiramisu::var("gPyramid_5_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_5_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t644("t644", (tiramisu::var("gPyramid_5_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_5_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t645("t645", (tiramisu::var("gPyramid_5_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_5_s0, 1, &laplacian_tiramisu);
    gPyramid_5_s0.set_expression(((((((gPyramid_4_s0(tiramisu::var("gPyramid_5_s0_k"), ((tiramisu::var("gPyramid_5_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("gPyramid_5_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((gPyramid_4_s0(tiramisu::var("gPyramid_5_s0_k"), ((tiramisu::var("gPyramid_5_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), t638) + gPyramid_4_s0(tiramisu::var("gPyramid_5_s0_k"), ((tiramisu::var("gPyramid_5_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("gPyramid_5_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + gPyramid_4_s0(tiramisu::var("gPyramid_5_s0_k"), ((tiramisu::var("gPyramid_5_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("gPyramid_5_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) * tiramisu::expr((float)0.125)) + ((((gPyramid_4_s0(tiramisu::var("gPyramid_5_s0_k"), t639, ((tiramisu::var("gPyramid_5_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((gPyramid_4_s0(tiramisu::var("gPyramid_5_s0_k"), t640, t641) + gPyramid_4_s0(tiramisu::var("gPyramid_5_s0_k"), t642, ((tiramisu::var("gPyramid_5_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + gPyramid_4_s0(tiramisu::var("gPyramid_5_s0_k"), t643, ((tiramisu::var("gPyramid_5_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) + ((gPyramid_4_s0(tiramisu::var("gPyramid_5_s0_k"), ((tiramisu::var("gPyramid_5_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("gPyramid_5_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((gPyramid_4_s0(tiramisu::var("gPyramid_5_s0_k"), ((tiramisu::var("gPyramid_5_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), t644) + gPyramid_4_s0(tiramisu::var("gPyramid_5_s0_k"), ((tiramisu::var("gPyramid_5_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("gPyramid_5_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + gPyramid_4_s0(tiramisu::var("gPyramid_5_s0_k"), ((tiramisu::var("gPyramid_5_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("gPyramid_5_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2))))) * tiramisu::expr((float)0.375))) + (((gPyramid_4_s0(tiramisu::var("gPyramid_5_s0_k"), ((tiramisu::var("gPyramid_5_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("gPyramid_5_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((gPyramid_4_s0(tiramisu::var("gPyramid_5_s0_k"), ((tiramisu::var("gPyramid_5_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), t645) + gPyramid_4_s0(tiramisu::var("gPyramid_5_s0_k"), ((tiramisu::var("gPyramid_5_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("gPyramid_5_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + gPyramid_4_s0(tiramisu::var("gPyramid_5_s0_k"), ((tiramisu::var("gPyramid_5_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("gPyramid_5_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) * tiramisu::expr((float)0.125))) * tiramisu::expr((float)0.125)));
    gPyramid_5_s0.set_access("{gPyramid_5_s0[gPyramid_5_s0_k, gPyramid_5_s0_y, gPyramid_5_s0_x]->buff_gPyramid_5[gPyramid_5_s0_k, gPyramid_5_s0_y, gPyramid_5_s0_x]}");

    // Define compute order for constants of "gPyramid_5_s0".
    t638.after(t637, t637.get_loop_level_number_from_dimension_name("inGPyramid_4_s0_x"));
    t639.after(t638, t637.get_loop_level_number_from_dimension_name("inGPyramid_4_s0_x"));
    t640.after(t639, t637.get_loop_level_number_from_dimension_name("inGPyramid_4_s0_x"));
    t641.after(t640, t637.get_loop_level_number_from_dimension_name("inGPyramid_4_s0_x"));
    t642.after(t641, t637.get_loop_level_number_from_dimension_name("inGPyramid_4_s0_x"));
    t643.after(t642, t637.get_loop_level_number_from_dimension_name("inGPyramid_4_s0_x"));
    t644.after(t643, t637.get_loop_level_number_from_dimension_name("inGPyramid_4_s0_x"));
    t645.after(t644, t637.get_loop_level_number_from_dimension_name("inGPyramid_4_s0_x"));

    // Define compute level for "gPyramid_5".
    gPyramid_5_s0.after(t645, t637.get_loop_level_number_from_dimension_name("inGPyramid_4_s0_x"));

    // Define temporary buffers for "inGPyramid_5".
    tiramisu::buffer buff_inGPyramid_5("buff_inGPyramid_5", {(tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) + tiramisu::expr((int32_t)12)), (tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) + tiramisu::expr((int32_t)12))}, tiramisu::p_float32, tiramisu::a_temporary, &laplacian_tiramisu);

    // Define store level for "buff_inGPyramid_5".

    // Define loop bounds for dimension "inGPyramid_5_s0_y".
    tiramisu::constant inGPyramid_5_s0_y_loop_min("inGPyramid_5_s0_y_loop_min", tiramisu::expr((int32_t)-11), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant inGPyramid_5_s0_y_loop_extent("inGPyramid_5_s0_y_loop_extent", (tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) + tiramisu::expr((int32_t)12)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);

    // Define loop bounds for dimension "inGPyramid_5_s0_x".
    tiramisu::constant inGPyramid_5_s0_x_loop_min("inGPyramid_5_s0_x_loop_min", tiramisu::expr((int32_t)-11), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant inGPyramid_5_s0_x_loop_extent("inGPyramid_5_s0_x_loop_extent", (tiramisu::expr(tiramisu::o_max, ((tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)32))) + tiramisu::expr((int32_t)12)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::computation inGPyramid_5_s0(
        "[inGPyramid_5_s0_y_loop_min, inGPyramid_5_s0_y_loop_extent, inGPyramid_5_s0_x_loop_min, inGPyramid_5_s0_x_loop_extent]->{inGPyramid_5_s0[inGPyramid_5_s0_y, inGPyramid_5_s0_x]: "
        "(inGPyramid_5_s0_y_loop_min <= inGPyramid_5_s0_y <= ((inGPyramid_5_s0_y_loop_min + inGPyramid_5_s0_y_loop_extent) + -1)) and (inGPyramid_5_s0_x_loop_min <= inGPyramid_5_s0_x <= ((inGPyramid_5_s0_x_loop_min + inGPyramid_5_s0_x_loop_extent) + -1))}",
        tiramisu::expr(), true, tiramisu::p_float32, &laplacian_tiramisu);
    tiramisu::constant t646("t646", (tiramisu::var("inGPyramid_5_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_5_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t647("t647", (tiramisu::var("inGPyramid_5_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_5_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t648("t648", (tiramisu::var("inGPyramid_5_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_5_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t649("t649", (tiramisu::var("inGPyramid_5_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_5_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t650("t650", (tiramisu::var("inGPyramid_5_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_5_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t651("t651", (tiramisu::var("inGPyramid_5_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_5_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t652("t652", (tiramisu::var("inGPyramid_5_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_5_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t653("t653", (tiramisu::var("inGPyramid_5_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_5_s0, 1, &laplacian_tiramisu);
    inGPyramid_5_s0.set_expression(((((((inGPyramid_4_s0(((tiramisu::var("inGPyramid_5_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("inGPyramid_5_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((inGPyramid_4_s0(((tiramisu::var("inGPyramid_5_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), t646) + inGPyramid_4_s0(((tiramisu::var("inGPyramid_5_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("inGPyramid_5_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + inGPyramid_4_s0(((tiramisu::var("inGPyramid_5_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("inGPyramid_5_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) * tiramisu::expr((float)0.125)) + ((((inGPyramid_4_s0(t647, ((tiramisu::var("inGPyramid_5_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((inGPyramid_4_s0(t648, t649) + inGPyramid_4_s0(t650, ((tiramisu::var("inGPyramid_5_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + inGPyramid_4_s0(t651, ((tiramisu::var("inGPyramid_5_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) + ((inGPyramid_4_s0(((tiramisu::var("inGPyramid_5_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("inGPyramid_5_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((inGPyramid_4_s0(((tiramisu::var("inGPyramid_5_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), t652) + inGPyramid_4_s0(((tiramisu::var("inGPyramid_5_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("inGPyramid_5_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + inGPyramid_4_s0(((tiramisu::var("inGPyramid_5_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("inGPyramid_5_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2))))) * tiramisu::expr((float)0.375))) + (((inGPyramid_4_s0(((tiramisu::var("inGPyramid_5_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("inGPyramid_5_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((inGPyramid_4_s0(((tiramisu::var("inGPyramid_5_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), t653) + inGPyramid_4_s0(((tiramisu::var("inGPyramid_5_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("inGPyramid_5_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + inGPyramid_4_s0(((tiramisu::var("inGPyramid_5_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("inGPyramid_5_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) * tiramisu::expr((float)0.125))) * tiramisu::expr((float)0.125)));
    inGPyramid_5_s0.set_access("{inGPyramid_5_s0[inGPyramid_5_s0_y, inGPyramid_5_s0_x]->buff_inGPyramid_5[inGPyramid_5_s0_y, inGPyramid_5_s0_x]}");

    // Define compute order for constants of "inGPyramid_5_s0".
    t646.after(t645, t645.get_loop_level_number_from_dimension_name("gPyramid_5_s0_x"));
    t647.after(t646, t645.get_loop_level_number_from_dimension_name("gPyramid_5_s0_x"));
    t648.after(t647, t645.get_loop_level_number_from_dimension_name("gPyramid_5_s0_x"));
    t649.after(t648, t645.get_loop_level_number_from_dimension_name("gPyramid_5_s0_x"));
    t650.after(t649, t645.get_loop_level_number_from_dimension_name("gPyramid_5_s0_x"));
    t651.after(t650, t645.get_loop_level_number_from_dimension_name("gPyramid_5_s0_x"));
    t652.after(t651, t645.get_loop_level_number_from_dimension_name("gPyramid_5_s0_x"));
    t653.after(t652, t645.get_loop_level_number_from_dimension_name("gPyramid_5_s0_x"));

    // Define compute level for "inGPyramid_5".
    inGPyramid_5_s0.after(t653, t645.get_loop_level_number_from_dimension_name("gPyramid_5_s0_x"));

    // Define temporary buffers for "gPyramid_6".
    tiramisu::buffer buff_gPyramid_6("buff_gPyramid_6", {((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr((float)0), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr((float)0), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1))), tiramisu::expr((int32_t)0)) - tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))), tiramisu::expr((float)0))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0))) + tiramisu::expr((int32_t)1)), (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)64))) + tiramisu::expr((int32_t)6)), (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)61)) / tiramisu::expr((int32_t)64))) + tiramisu::expr((int32_t)6))}, tiramisu::p_float32, tiramisu::a_temporary, &laplacian_tiramisu);

    // Define store level for "buff_gPyramid_6".

    // Define loop bounds for dimension "gPyramid_6_s0_k".
    tiramisu::constant gPyramid_6_s0_k_loop_min("gPyramid_6_s0_k_loop_min", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))), tiramisu::expr((float)0))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant gPyramid_6_s0_k_loop_extent("gPyramid_6_s0_k_loop_extent", ((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr((float)0), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) - tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))), tiramisu::expr((float)0))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0))) + tiramisu::expr((int32_t)2)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);

    // Define loop bounds for dimension "gPyramid_6_s0_y".
    tiramisu::constant gPyramid_6_s0_y_loop_min("gPyramid_6_s0_y_loop_min", tiramisu::expr((int32_t)-5), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant gPyramid_6_s0_y_loop_extent("gPyramid_6_s0_y_loop_extent", (tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) + tiramisu::expr((int32_t)6)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);

    // Define loop bounds for dimension "gPyramid_6_s0_x".
    tiramisu::constant gPyramid_6_s0_x_loop_min("gPyramid_6_s0_x_loop_min", tiramisu::expr((int32_t)-5), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant gPyramid_6_s0_x_loop_extent("gPyramid_6_s0_x_loop_extent", (tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) + tiramisu::expr((int32_t)6)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::computation gPyramid_6_s0(
        "[gPyramid_6_s0_k_loop_min, gPyramid_6_s0_k_loop_extent, gPyramid_6_s0_y_loop_min, gPyramid_6_s0_y_loop_extent, gPyramid_6_s0_x_loop_min, gPyramid_6_s0_x_loop_extent]->{gPyramid_6_s0[gPyramid_6_s0_k, gPyramid_6_s0_y, gPyramid_6_s0_x]: "
        "(gPyramid_6_s0_k_loop_min <= gPyramid_6_s0_k <= ((gPyramid_6_s0_k_loop_min + gPyramid_6_s0_k_loop_extent) + -1)) and (gPyramid_6_s0_y_loop_min <= gPyramid_6_s0_y <= ((gPyramid_6_s0_y_loop_min + gPyramid_6_s0_y_loop_extent) + -1)) and (gPyramid_6_s0_x_loop_min <= gPyramid_6_s0_x <= ((gPyramid_6_s0_x_loop_min + gPyramid_6_s0_x_loop_extent) + -1))}",
        tiramisu::expr(), true, tiramisu::p_float32, &laplacian_tiramisu);
    tiramisu::constant t654("t654", (tiramisu::var("gPyramid_6_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_6_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t655("t655", (tiramisu::var("gPyramid_6_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_6_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t656("t656", (tiramisu::var("gPyramid_6_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_6_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t657("t657", (tiramisu::var("gPyramid_6_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_6_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t658("t658", (tiramisu::var("gPyramid_6_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_6_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t659("t659", (tiramisu::var("gPyramid_6_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_6_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t660("t660", (tiramisu::var("gPyramid_6_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_6_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t661("t661", (tiramisu::var("gPyramid_6_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_6_s0, 1, &laplacian_tiramisu);
    gPyramid_6_s0.set_expression(((((((gPyramid_5_s0(tiramisu::var("gPyramid_6_s0_k"), ((tiramisu::var("gPyramid_6_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("gPyramid_6_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((gPyramid_5_s0(tiramisu::var("gPyramid_6_s0_k"), ((tiramisu::var("gPyramid_6_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), t654) + gPyramid_5_s0(tiramisu::var("gPyramid_6_s0_k"), ((tiramisu::var("gPyramid_6_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("gPyramid_6_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + gPyramid_5_s0(tiramisu::var("gPyramid_6_s0_k"), ((tiramisu::var("gPyramid_6_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("gPyramid_6_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) * tiramisu::expr((float)0.125)) + ((((gPyramid_5_s0(tiramisu::var("gPyramid_6_s0_k"), t655, ((tiramisu::var("gPyramid_6_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((gPyramid_5_s0(tiramisu::var("gPyramid_6_s0_k"), t656, t657) + gPyramid_5_s0(tiramisu::var("gPyramid_6_s0_k"), t658, ((tiramisu::var("gPyramid_6_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + gPyramid_5_s0(tiramisu::var("gPyramid_6_s0_k"), t659, ((tiramisu::var("gPyramid_6_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) + ((gPyramid_5_s0(tiramisu::var("gPyramid_6_s0_k"), ((tiramisu::var("gPyramid_6_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("gPyramid_6_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((gPyramid_5_s0(tiramisu::var("gPyramid_6_s0_k"), ((tiramisu::var("gPyramid_6_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), t660) + gPyramid_5_s0(tiramisu::var("gPyramid_6_s0_k"), ((tiramisu::var("gPyramid_6_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("gPyramid_6_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + gPyramid_5_s0(tiramisu::var("gPyramid_6_s0_k"), ((tiramisu::var("gPyramid_6_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("gPyramid_6_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2))))) * tiramisu::expr((float)0.375))) + (((gPyramid_5_s0(tiramisu::var("gPyramid_6_s0_k"), ((tiramisu::var("gPyramid_6_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("gPyramid_6_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((gPyramid_5_s0(tiramisu::var("gPyramid_6_s0_k"), ((tiramisu::var("gPyramid_6_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), t661) + gPyramid_5_s0(tiramisu::var("gPyramid_6_s0_k"), ((tiramisu::var("gPyramid_6_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("gPyramid_6_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + gPyramid_5_s0(tiramisu::var("gPyramid_6_s0_k"), ((tiramisu::var("gPyramid_6_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("gPyramid_6_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) * tiramisu::expr((float)0.125))) * tiramisu::expr((float)0.125)));
    gPyramid_6_s0.set_access("{gPyramid_6_s0[gPyramid_6_s0_k, gPyramid_6_s0_y, gPyramid_6_s0_x]->buff_gPyramid_6[gPyramid_6_s0_k, gPyramid_6_s0_y, gPyramid_6_s0_x]}");

    // Define compute order for constants of "gPyramid_6_s0".
    t654.after(t653, t653.get_loop_level_number_from_dimension_name("inGPyramid_5_s0_x"));
    t655.after(t654, t653.get_loop_level_number_from_dimension_name("inGPyramid_5_s0_x"));
    t656.after(t655, t653.get_loop_level_number_from_dimension_name("inGPyramid_5_s0_x"));
    t657.after(t656, t653.get_loop_level_number_from_dimension_name("inGPyramid_5_s0_x"));
    t658.after(t657, t653.get_loop_level_number_from_dimension_name("inGPyramid_5_s0_x"));
    t659.after(t658, t653.get_loop_level_number_from_dimension_name("inGPyramid_5_s0_x"));
    t660.after(t659, t653.get_loop_level_number_from_dimension_name("inGPyramid_5_s0_x"));
    t661.after(t660, t653.get_loop_level_number_from_dimension_name("inGPyramid_5_s0_x"));

    // Define compute level for "gPyramid_6".
    gPyramid_6_s0.after(t661, t653.get_loop_level_number_from_dimension_name("inGPyramid_5_s0_x"));

    // Define temporary buffers for "inGPyramid_6".
    tiramisu::buffer buff_inGPyramid_6("buff_inGPyramid_6", {(tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) + tiramisu::expr((int32_t)6)), (tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) + tiramisu::expr((int32_t)6))}, tiramisu::p_float32, tiramisu::a_temporary, &laplacian_tiramisu);

    // Define store level for "buff_inGPyramid_6".

    // Define loop bounds for dimension "inGPyramid_6_s0_y".
    tiramisu::constant inGPyramid_6_s0_y_loop_min("inGPyramid_6_s0_y_loop_min", tiramisu::expr((int32_t)-5), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant inGPyramid_6_s0_y_loop_extent("inGPyramid_6_s0_y_loop_extent", (tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) + tiramisu::expr((int32_t)6)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);

    // Define loop bounds for dimension "inGPyramid_6_s0_x".
    tiramisu::constant inGPyramid_6_s0_x_loop_min("inGPyramid_6_s0_x_loop_min", tiramisu::expr((int32_t)-5), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant inGPyramid_6_s0_x_loop_extent("inGPyramid_6_s0_x_loop_extent", (tiramisu::expr(tiramisu::o_max, ((((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)253)) / tiramisu::expr((int32_t)128)) * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)125)) / tiramisu::expr((int32_t)64))) + tiramisu::expr((int32_t)6)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::computation inGPyramid_6_s0(
        "[inGPyramid_6_s0_y_loop_min, inGPyramid_6_s0_y_loop_extent, inGPyramid_6_s0_x_loop_min, inGPyramid_6_s0_x_loop_extent]->{inGPyramid_6_s0[inGPyramid_6_s0_y, inGPyramid_6_s0_x]: "
        "(inGPyramid_6_s0_y_loop_min <= inGPyramid_6_s0_y <= ((inGPyramid_6_s0_y_loop_min + inGPyramid_6_s0_y_loop_extent) + -1)) and (inGPyramid_6_s0_x_loop_min <= inGPyramid_6_s0_x <= ((inGPyramid_6_s0_x_loop_min + inGPyramid_6_s0_x_loop_extent) + -1))}",
        tiramisu::expr(), true, tiramisu::p_float32, &laplacian_tiramisu);
    tiramisu::constant t662("t662", (tiramisu::var("inGPyramid_6_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_6_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t663("t663", (tiramisu::var("inGPyramid_6_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_6_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t664("t664", (tiramisu::var("inGPyramid_6_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_6_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t665("t665", (tiramisu::var("inGPyramid_6_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_6_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t666("t666", (tiramisu::var("inGPyramid_6_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_6_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t667("t667", (tiramisu::var("inGPyramid_6_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_6_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t668("t668", (tiramisu::var("inGPyramid_6_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_6_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t669("t669", (tiramisu::var("inGPyramid_6_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_6_s0, 1, &laplacian_tiramisu);
    inGPyramid_6_s0.set_expression(((((((inGPyramid_5_s0(((tiramisu::var("inGPyramid_6_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("inGPyramid_6_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((inGPyramid_5_s0(((tiramisu::var("inGPyramid_6_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), t662) + inGPyramid_5_s0(((tiramisu::var("inGPyramid_6_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("inGPyramid_6_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + inGPyramid_5_s0(((tiramisu::var("inGPyramid_6_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("inGPyramid_6_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) * tiramisu::expr((float)0.125)) + ((((inGPyramid_5_s0(t663, ((tiramisu::var("inGPyramid_6_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((inGPyramid_5_s0(t664, t665) + inGPyramid_5_s0(t666, ((tiramisu::var("inGPyramid_6_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + inGPyramid_5_s0(t667, ((tiramisu::var("inGPyramid_6_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) + ((inGPyramid_5_s0(((tiramisu::var("inGPyramid_6_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("inGPyramid_6_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((inGPyramid_5_s0(((tiramisu::var("inGPyramid_6_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), t668) + inGPyramid_5_s0(((tiramisu::var("inGPyramid_6_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("inGPyramid_6_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + inGPyramid_5_s0(((tiramisu::var("inGPyramid_6_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("inGPyramid_6_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2))))) * tiramisu::expr((float)0.375))) + (((inGPyramid_5_s0(((tiramisu::var("inGPyramid_6_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("inGPyramid_6_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((inGPyramid_5_s0(((tiramisu::var("inGPyramid_6_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), t669) + inGPyramid_5_s0(((tiramisu::var("inGPyramid_6_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("inGPyramid_6_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + inGPyramid_5_s0(((tiramisu::var("inGPyramid_6_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("inGPyramid_6_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) * tiramisu::expr((float)0.125))) * tiramisu::expr((float)0.125)));
    inGPyramid_6_s0.set_access("{inGPyramid_6_s0[inGPyramid_6_s0_y, inGPyramid_6_s0_x]->buff_inGPyramid_6[inGPyramid_6_s0_y, inGPyramid_6_s0_x]}");

    // Define compute order for constants of "inGPyramid_6_s0".
    t662.after(t661, t661.get_loop_level_number_from_dimension_name("gPyramid_6_s0_x"));
    t663.after(t662, t661.get_loop_level_number_from_dimension_name("gPyramid_6_s0_x"));
    t664.after(t663, t661.get_loop_level_number_from_dimension_name("gPyramid_6_s0_x"));
    t665.after(t664, t661.get_loop_level_number_from_dimension_name("gPyramid_6_s0_x"));
    t666.after(t665, t661.get_loop_level_number_from_dimension_name("gPyramid_6_s0_x"));
    t667.after(t666, t661.get_loop_level_number_from_dimension_name("gPyramid_6_s0_x"));
    t668.after(t667, t661.get_loop_level_number_from_dimension_name("gPyramid_6_s0_x"));
    t669.after(t668, t661.get_loop_level_number_from_dimension_name("gPyramid_6_s0_x"));

    // Define compute level for "inGPyramid_6".
    inGPyramid_6_s0.after(t669, t661.get_loop_level_number_from_dimension_name("gPyramid_6_s0_x"));

    // Define temporary buffers for "gPyramid_7".
    tiramisu::buffer buff_gPyramid_7("buff_gPyramid_7", {((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr((float)0), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) - tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))), tiramisu::expr((float)0))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0))) + tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)637)) / tiramisu::expr((int32_t)128)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)637)) / tiramisu::expr((int32_t)128))}, tiramisu::p_float32, tiramisu::a_temporary, &laplacian_tiramisu);

    // Define store level for "buff_gPyramid_7".

    // Define loop bounds for dimension "gPyramid_7_s0_k".
    tiramisu::constant gPyramid_7_s0_k_loop_min("gPyramid_7_s0_k_loop_min", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))), tiramisu::expr((float)0))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant gPyramid_7_s0_k_loop_extent("gPyramid_7_s0_k_loop_extent", ((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr((float)0), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) - tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, tiramisu::expr(tiramisu::o_select, (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))) < tiramisu::expr((float)0)), tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))), tiramisu::expr((float)0))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0))) + tiramisu::expr((int32_t)2)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);

    // Define loop bounds for dimension "gPyramid_7_s0_y".
    tiramisu::constant gPyramid_7_s0_y_loop_min("gPyramid_7_s0_y_loop_min", tiramisu::expr((int32_t)-2), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant gPyramid_7_s0_y_loop_extent("gPyramid_7_s0_y_loop_extent", ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)637)) / tiramisu::expr((int32_t)128)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);

    // Define loop bounds for dimension "gPyramid_7_s0_x".
    tiramisu::constant gPyramid_7_s0_x_loop_min("gPyramid_7_s0_x_loop_min", tiramisu::expr((int32_t)-2), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant gPyramid_7_s0_x_loop_extent("gPyramid_7_s0_x_loop_extent", ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)637)) / tiramisu::expr((int32_t)128)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::computation gPyramid_7_s0(
        "[gPyramid_7_s0_k_loop_min, gPyramid_7_s0_k_loop_extent, gPyramid_7_s0_y_loop_min, gPyramid_7_s0_y_loop_extent, gPyramid_7_s0_x_loop_min, gPyramid_7_s0_x_loop_extent]->{gPyramid_7_s0[gPyramid_7_s0_k, gPyramid_7_s0_y, gPyramid_7_s0_x]: "
        "(gPyramid_7_s0_k_loop_min <= gPyramid_7_s0_k <= ((gPyramid_7_s0_k_loop_min + gPyramid_7_s0_k_loop_extent) + -1)) and (gPyramid_7_s0_y_loop_min <= gPyramid_7_s0_y <= ((gPyramid_7_s0_y_loop_min + gPyramid_7_s0_y_loop_extent) + -1)) and (gPyramid_7_s0_x_loop_min <= gPyramid_7_s0_x <= ((gPyramid_7_s0_x_loop_min + gPyramid_7_s0_x_loop_extent) + -1))}",
        tiramisu::expr(), true, tiramisu::p_float32, &laplacian_tiramisu);
    tiramisu::constant t670("t670", (tiramisu::var("gPyramid_7_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_7_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t671("t671", (tiramisu::var("gPyramid_7_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_7_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t672("t672", (tiramisu::var("gPyramid_7_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_7_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t673("t673", (tiramisu::var("gPyramid_7_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_7_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t674("t674", (tiramisu::var("gPyramid_7_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_7_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t675("t675", (tiramisu::var("gPyramid_7_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_7_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t676("t676", (tiramisu::var("gPyramid_7_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_7_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t677("t677", (tiramisu::var("gPyramid_7_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &gPyramid_7_s0, 1, &laplacian_tiramisu);
    gPyramid_7_s0.set_expression(((((((gPyramid_6_s0(tiramisu::var("gPyramid_7_s0_k"), ((tiramisu::var("gPyramid_7_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("gPyramid_7_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((gPyramid_6_s0(tiramisu::var("gPyramid_7_s0_k"), ((tiramisu::var("gPyramid_7_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), t670) + gPyramid_6_s0(tiramisu::var("gPyramid_7_s0_k"), ((tiramisu::var("gPyramid_7_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("gPyramid_7_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + gPyramid_6_s0(tiramisu::var("gPyramid_7_s0_k"), ((tiramisu::var("gPyramid_7_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("gPyramid_7_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) * tiramisu::expr((float)0.125)) + ((((gPyramid_6_s0(tiramisu::var("gPyramid_7_s0_k"), t671, ((tiramisu::var("gPyramid_7_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((gPyramid_6_s0(tiramisu::var("gPyramid_7_s0_k"), t672, t673) + gPyramid_6_s0(tiramisu::var("gPyramid_7_s0_k"), t674, ((tiramisu::var("gPyramid_7_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + gPyramid_6_s0(tiramisu::var("gPyramid_7_s0_k"), t675, ((tiramisu::var("gPyramid_7_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) + ((gPyramid_6_s0(tiramisu::var("gPyramid_7_s0_k"), ((tiramisu::var("gPyramid_7_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("gPyramid_7_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((gPyramid_6_s0(tiramisu::var("gPyramid_7_s0_k"), ((tiramisu::var("gPyramid_7_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), t676) + gPyramid_6_s0(tiramisu::var("gPyramid_7_s0_k"), ((tiramisu::var("gPyramid_7_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("gPyramid_7_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + gPyramid_6_s0(tiramisu::var("gPyramid_7_s0_k"), ((tiramisu::var("gPyramid_7_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("gPyramid_7_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2))))) * tiramisu::expr((float)0.375))) + (((gPyramid_6_s0(tiramisu::var("gPyramid_7_s0_k"), ((tiramisu::var("gPyramid_7_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("gPyramid_7_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((gPyramid_6_s0(tiramisu::var("gPyramid_7_s0_k"), ((tiramisu::var("gPyramid_7_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), t677) + gPyramid_6_s0(tiramisu::var("gPyramid_7_s0_k"), ((tiramisu::var("gPyramid_7_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("gPyramid_7_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + gPyramid_6_s0(tiramisu::var("gPyramid_7_s0_k"), ((tiramisu::var("gPyramid_7_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("gPyramid_7_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) * tiramisu::expr((float)0.125))) * tiramisu::expr((float)0.125)));
    gPyramid_7_s0.set_access("{gPyramid_7_s0[gPyramid_7_s0_k, gPyramid_7_s0_y, gPyramid_7_s0_x]->buff_gPyramid_7[gPyramid_7_s0_k, gPyramid_7_s0_y, gPyramid_7_s0_x]}");

    // Define compute order for constants of "gPyramid_7_s0".
    t670.after(t669, t669.get_loop_level_number_from_dimension_name("inGPyramid_6_s0_x"));
    t671.after(t670, t669.get_loop_level_number_from_dimension_name("inGPyramid_6_s0_x"));
    t672.after(t671, t669.get_loop_level_number_from_dimension_name("inGPyramid_6_s0_x"));
    t673.after(t672, t669.get_loop_level_number_from_dimension_name("inGPyramid_6_s0_x"));
    t674.after(t673, t669.get_loop_level_number_from_dimension_name("inGPyramid_6_s0_x"));
    t675.after(t674, t669.get_loop_level_number_from_dimension_name("inGPyramid_6_s0_x"));
    t676.after(t675, t669.get_loop_level_number_from_dimension_name("inGPyramid_6_s0_x"));
    t677.after(t676, t669.get_loop_level_number_from_dimension_name("inGPyramid_6_s0_x"));

    // Define compute level for "gPyramid_7".
    gPyramid_7_s0.after(t677, t669.get_loop_level_number_from_dimension_name("inGPyramid_6_s0_x"));

    // Define temporary buffers for "inGPyramid_7".
    tiramisu::buffer buff_inGPyramid_7("buff_inGPyramid_7", {((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)637)) / tiramisu::expr((int32_t)128)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)637)) / tiramisu::expr((int32_t)128))}, tiramisu::p_float32, tiramisu::a_temporary, &laplacian_tiramisu);

    // Define store level for "buff_inGPyramid_7".

    // Define loop bounds for dimension "inGPyramid_7_s0_y".
    tiramisu::constant inGPyramid_7_s0_y_loop_min("inGPyramid_7_s0_y_loop_min", tiramisu::expr((int32_t)-2), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant inGPyramid_7_s0_y_loop_extent("inGPyramid_7_s0_y_loop_extent", ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)637)) / tiramisu::expr((int32_t)128)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);

    // Define loop bounds for dimension "inGPyramid_7_s0_x".
    tiramisu::constant inGPyramid_7_s0_x_loop_min("inGPyramid_7_s0_x_loop_min", tiramisu::expr((int32_t)-2), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant inGPyramid_7_s0_x_loop_extent("inGPyramid_7_s0_x_loop_extent", ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)637)) / tiramisu::expr((int32_t)128)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::computation inGPyramid_7_s0(
        "[inGPyramid_7_s0_y_loop_min, inGPyramid_7_s0_y_loop_extent, inGPyramid_7_s0_x_loop_min, inGPyramid_7_s0_x_loop_extent]->{inGPyramid_7_s0[inGPyramid_7_s0_y, inGPyramid_7_s0_x]: "
        "(inGPyramid_7_s0_y_loop_min <= inGPyramid_7_s0_y <= ((inGPyramid_7_s0_y_loop_min + inGPyramid_7_s0_y_loop_extent) + -1)) and (inGPyramid_7_s0_x_loop_min <= inGPyramid_7_s0_x <= ((inGPyramid_7_s0_x_loop_min + inGPyramid_7_s0_x_loop_extent) + -1))}",
        tiramisu::expr(), true, tiramisu::p_float32, &laplacian_tiramisu);
    tiramisu::constant t678("t678", (tiramisu::var("inGPyramid_7_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_7_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t679("t679", (tiramisu::var("inGPyramid_7_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_7_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t680("t680", (tiramisu::var("inGPyramid_7_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_7_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t681("t681", (tiramisu::var("inGPyramid_7_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_7_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t682("t682", (tiramisu::var("inGPyramid_7_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_7_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t683("t683", (tiramisu::var("inGPyramid_7_s0_y") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_7_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t684("t684", (tiramisu::var("inGPyramid_7_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_7_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t685("t685", (tiramisu::var("inGPyramid_7_s0_x") * tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &inGPyramid_7_s0, 1, &laplacian_tiramisu);
    inGPyramid_7_s0.set_expression(((((((inGPyramid_6_s0(((tiramisu::var("inGPyramid_7_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("inGPyramid_7_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((inGPyramid_6_s0(((tiramisu::var("inGPyramid_7_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), t678) + inGPyramid_6_s0(((tiramisu::var("inGPyramid_7_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("inGPyramid_7_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + inGPyramid_6_s0(((tiramisu::var("inGPyramid_7_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1)), ((tiramisu::var("inGPyramid_7_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) * tiramisu::expr((float)0.125)) + ((((inGPyramid_6_s0(t679, ((tiramisu::var("inGPyramid_7_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((inGPyramid_6_s0(t680, t681) + inGPyramid_6_s0(t682, ((tiramisu::var("inGPyramid_7_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + inGPyramid_6_s0(t683, ((tiramisu::var("inGPyramid_7_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) + ((inGPyramid_6_s0(((tiramisu::var("inGPyramid_7_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("inGPyramid_7_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((inGPyramid_6_s0(((tiramisu::var("inGPyramid_7_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), t684) + inGPyramid_6_s0(((tiramisu::var("inGPyramid_7_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("inGPyramid_7_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + inGPyramid_6_s0(((tiramisu::var("inGPyramid_7_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)), ((tiramisu::var("inGPyramid_7_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2))))) * tiramisu::expr((float)0.375))) + (((inGPyramid_6_s0(((tiramisu::var("inGPyramid_7_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("inGPyramid_7_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)-1))) + ((inGPyramid_6_s0(((tiramisu::var("inGPyramid_7_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), t685) + inGPyramid_6_s0(((tiramisu::var("inGPyramid_7_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("inGPyramid_7_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)1)))) * tiramisu::expr((float)3))) + inGPyramid_6_s0(((tiramisu::var("inGPyramid_7_s0_y") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)), ((tiramisu::var("inGPyramid_7_s0_x") * tiramisu::expr((int32_t)2)) + tiramisu::expr((int32_t)2)))) * tiramisu::expr((float)0.125))) * tiramisu::expr((float)0.125)));
    inGPyramid_7_s0.set_access("{inGPyramid_7_s0[inGPyramid_7_s0_y, inGPyramid_7_s0_x]->buff_inGPyramid_7[inGPyramid_7_s0_y, inGPyramid_7_s0_x]}");

    // Define compute order for constants of "inGPyramid_7_s0".
    t678.after(t677, t677.get_loop_level_number_from_dimension_name("gPyramid_7_s0_x"));
    t679.after(t678, t677.get_loop_level_number_from_dimension_name("gPyramid_7_s0_x"));
    t680.after(t679, t677.get_loop_level_number_from_dimension_name("gPyramid_7_s0_x"));
    t681.after(t680, t677.get_loop_level_number_from_dimension_name("gPyramid_7_s0_x"));
    t682.after(t681, t677.get_loop_level_number_from_dimension_name("gPyramid_7_s0_x"));
    t683.after(t682, t677.get_loop_level_number_from_dimension_name("gPyramid_7_s0_x"));
    t684.after(t683, t677.get_loop_level_number_from_dimension_name("gPyramid_7_s0_x"));
    t685.after(t684, t677.get_loop_level_number_from_dimension_name("gPyramid_7_s0_x"));

    // Define compute level for "inGPyramid_7".
    inGPyramid_7_s0.after(t685, t677.get_loop_level_number_from_dimension_name("gPyramid_7_s0_x"));

    // Define temporary buffers for "outGPyramid_7".
    tiramisu::buffer buff_outGPyramid_7("buff_outGPyramid_7", {((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)637)) / tiramisu::expr((int32_t)128)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)637)) / tiramisu::expr((int32_t)128))}, tiramisu::p_float32, tiramisu::a_temporary, &laplacian_tiramisu);

    // Define store level for "buff_outGPyramid_7".

    // Define loop bounds for dimension "outGPyramid_7_s0_y".
    tiramisu::constant outGPyramid_7_s0_y_loop_min("outGPyramid_7_s0_y_loop_min", tiramisu::expr((int32_t)-2), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant outGPyramid_7_s0_y_loop_extent("outGPyramid_7_s0_y_loop_extent", ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)637)) / tiramisu::expr((int32_t)128)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);

    // Define loop bounds for dimension "outGPyramid_7_s0_x".
    tiramisu::constant outGPyramid_7_s0_x_loop_min("outGPyramid_7_s0_x_loop_min", tiramisu::expr((int32_t)-2), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant outGPyramid_7_s0_x_loop_extent("outGPyramid_7_s0_x_loop_extent", ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)637)) / tiramisu::expr((int32_t)128)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::computation outGPyramid_7_s0(
        "[outGPyramid_7_s0_y_loop_min, outGPyramid_7_s0_y_loop_extent, outGPyramid_7_s0_x_loop_min, outGPyramid_7_s0_x_loop_extent]->{outGPyramid_7_s0[outGPyramid_7_s0_y, outGPyramid_7_s0_x]: "
        "(outGPyramid_7_s0_y_loop_min <= outGPyramid_7_s0_y <= ((outGPyramid_7_s0_y_loop_min + outGPyramid_7_s0_y_loop_extent) + -1)) and (outGPyramid_7_s0_x_loop_min <= outGPyramid_7_s0_x <= ((outGPyramid_7_s0_x_loop_min + outGPyramid_7_s0_x_loop_extent) + -1))}",
        tiramisu::expr(), true, tiramisu::p_float32, &laplacian_tiramisu);
    tiramisu::constant t686("t686", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_7_s0(tiramisu::var("outGPyramid_7_s0_y"), tiramisu::var("outGPyramid_7_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_7_s0, 1, &laplacian_tiramisu);
    outGPyramid_7_s0.set_expression((((tiramisu::expr((float)1) - ((inGPyramid_7_s0(tiramisu::var("outGPyramid_7_s0_y"), tiramisu::var("outGPyramid_7_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) - tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_7_s0(tiramisu::var("outGPyramid_7_s0_y"), tiramisu::var("outGPyramid_7_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0))))) * gPyramid_7_s0(t686, tiramisu::var("outGPyramid_7_s0_y"), tiramisu::var("outGPyramid_7_s0_x"))) + (((inGPyramid_7_s0(tiramisu::var("outGPyramid_7_s0_y"), tiramisu::var("outGPyramid_7_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) - tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_7_s0(tiramisu::var("outGPyramid_7_s0_y"), tiramisu::var("outGPyramid_7_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)))) * gPyramid_7_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_7_s0(tiramisu::var("outGPyramid_7_s0_y"), tiramisu::var("outGPyramid_7_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), tiramisu::var("outGPyramid_7_s0_y"), tiramisu::var("outGPyramid_7_s0_x")))));
    outGPyramid_7_s0.set_access("{outGPyramid_7_s0[outGPyramid_7_s0_y, outGPyramid_7_s0_x]->buff_outGPyramid_7[outGPyramid_7_s0_y, outGPyramid_7_s0_x]}");

    // Define compute order for constants of "outGPyramid_7_s0".
    t686.after(t685, t685.get_loop_level_number_from_dimension_name("inGPyramid_7_s0_x"));

    // Define compute level for "outGPyramid_7".
    outGPyramid_7_s0.after(t686, t685.get_loop_level_number_from_dimension_name("inGPyramid_7_s0_x"));

    // Define temporary buffers for "outGPyramid_6".
    tiramisu::buffer buff_outGPyramid_6("buff_outGPyramid_6", {((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)317)) / tiramisu::expr((int32_t)64)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)317)) / tiramisu::expr((int32_t)64))}, tiramisu::p_float32, tiramisu::a_temporary, &laplacian_tiramisu);

    // Define store level for "buff_outGPyramid_6".

    // Define loop bounds for dimension "outGPyramid_6_s0_y".
    tiramisu::constant outGPyramid_6_s0_y_loop_min("outGPyramid_6_s0_y_loop_min", tiramisu::expr((int32_t)-2), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant outGPyramid_6_s0_y_loop_extent("outGPyramid_6_s0_y_loop_extent", ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)317)) / tiramisu::expr((int32_t)64)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);

    // Define loop bounds for dimension "outGPyramid_6_s0_x".
    tiramisu::constant outGPyramid_6_s0_x_loop_min("outGPyramid_6_s0_x_loop_min", tiramisu::expr((int32_t)-2), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant outGPyramid_6_s0_x_loop_extent("outGPyramid_6_s0_x_loop_extent", ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)317)) / tiramisu::expr((int32_t)64)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::computation outGPyramid_6_s0(
        "[outGPyramid_6_s0_y_loop_min, outGPyramid_6_s0_y_loop_extent, outGPyramid_6_s0_x_loop_min, outGPyramid_6_s0_x_loop_extent]->{outGPyramid_6_s0[outGPyramid_6_s0_y, outGPyramid_6_s0_x]: "
        "(outGPyramid_6_s0_y_loop_min <= outGPyramid_6_s0_y <= ((outGPyramid_6_s0_y_loop_min + outGPyramid_6_s0_y_loop_extent) + -1)) and (outGPyramid_6_s0_x_loop_min <= outGPyramid_6_s0_x <= ((outGPyramid_6_s0_x_loop_min + outGPyramid_6_s0_x_loop_extent) + -1))}",
        tiramisu::expr(), true, tiramisu::p_float32, &laplacian_tiramisu);
    tiramisu::constant t687("t687", (tiramisu::var("outGPyramid_6_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_6_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t688("t688", (tiramisu::var("outGPyramid_6_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_6_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t689("t689", (tiramisu::var("outGPyramid_6_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_6_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t690("t690", (tiramisu::var("outGPyramid_6_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_6_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t691("t691", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_6_s0(tiramisu::var("outGPyramid_6_s0_y"), tiramisu::var("outGPyramid_6_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_6_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t692("t692", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_6_s0(tiramisu::var("outGPyramid_6_s0_y"), tiramisu::var("outGPyramid_6_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_6_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t693("t693", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_6_s0(tiramisu::var("outGPyramid_6_s0_y"), tiramisu::var("outGPyramid_6_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_6_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t694("t694", (tiramisu::var("outGPyramid_6_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_6_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t695("t695", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_6_s0(tiramisu::var("outGPyramid_6_s0_y"), tiramisu::var("outGPyramid_6_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_6_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t696("t696", (tiramisu::var("outGPyramid_6_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_6_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t697("t697", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_6_s0(tiramisu::var("outGPyramid_6_s0_y"), tiramisu::var("outGPyramid_6_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_6_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t698("t698", (tiramisu::var("outGPyramid_6_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_6_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t699("t699", (tiramisu::var("outGPyramid_6_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_6_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t700("t700", (tiramisu::var("outGPyramid_6_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_6_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t701("t701", (tiramisu::var("outGPyramid_6_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_6_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t702("t702", (tiramisu::var("outGPyramid_6_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_6_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t703("t703", (tiramisu::var("outGPyramid_6_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_6_s0, 1, &laplacian_tiramisu);
    outGPyramid_6_s0.set_expression((((((outGPyramid_7_s0((((tiramisu::var("outGPyramid_6_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_6_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), (((tiramisu::var("outGPyramid_6_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_6_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (outGPyramid_7_s0((((tiramisu::var("outGPyramid_6_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_6_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), t687) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.25)) + (((outGPyramid_7_s0(t688, (((tiramisu::var("outGPyramid_6_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_6_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (outGPyramid_7_s0(t689, t690) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.75))) + (((tiramisu::expr((float)1) - ((inGPyramid_6_s0(tiramisu::var("outGPyramid_6_s0_y"), tiramisu::var("outGPyramid_6_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) - tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_6_s0(tiramisu::var("outGPyramid_6_s0_y"), tiramisu::var("outGPyramid_6_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0))))) * (gPyramid_6_s0(t691, tiramisu::var("outGPyramid_6_s0_y"), tiramisu::var("outGPyramid_6_s0_x")) - ((((gPyramid_7_s0(t692, (((tiramisu::var("outGPyramid_6_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_6_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), (((tiramisu::var("outGPyramid_6_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_6_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (gPyramid_7_s0(t693, (((tiramisu::var("outGPyramid_6_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_6_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), t694) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.25)) + (((gPyramid_7_s0(t695, t696, (((tiramisu::var("outGPyramid_6_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_6_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (gPyramid_7_s0(t697, t698, t699) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.75))))) + (((inGPyramid_6_s0(tiramisu::var("outGPyramid_6_s0_y"), tiramisu::var("outGPyramid_6_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) - tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_6_s0(tiramisu::var("outGPyramid_6_s0_y"), tiramisu::var("outGPyramid_6_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)))) * (gPyramid_6_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_6_s0(tiramisu::var("outGPyramid_6_s0_y"), tiramisu::var("outGPyramid_6_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), tiramisu::var("outGPyramid_6_s0_y"), tiramisu::var("outGPyramid_6_s0_x")) - ((((gPyramid_7_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_6_s0(tiramisu::var("outGPyramid_6_s0_y"), tiramisu::var("outGPyramid_6_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), (((tiramisu::var("outGPyramid_6_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_6_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), (((tiramisu::var("outGPyramid_6_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_6_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (gPyramid_7_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_6_s0(tiramisu::var("outGPyramid_6_s0_y"), tiramisu::var("outGPyramid_6_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), (((tiramisu::var("outGPyramid_6_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_6_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), t700) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.25)) + (((gPyramid_7_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_6_s0(tiramisu::var("outGPyramid_6_s0_y"), tiramisu::var("outGPyramid_6_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), t701, (((tiramisu::var("outGPyramid_6_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_6_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (gPyramid_7_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_6_s0(tiramisu::var("outGPyramid_6_s0_y"), tiramisu::var("outGPyramid_6_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), t702, t703) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.75))))))));
    outGPyramid_6_s0.set_access("{outGPyramid_6_s0[outGPyramid_6_s0_y, outGPyramid_6_s0_x]->buff_outGPyramid_6[outGPyramid_6_s0_y, outGPyramid_6_s0_x]}");

    // Define compute order for constants of "outGPyramid_6_s0".
    t687.after(t686, t686.get_loop_level_number_from_dimension_name("outGPyramid_7_s0_x"));
    t688.after(t687, t686.get_loop_level_number_from_dimension_name("outGPyramid_7_s0_x"));
    t689.after(t688, t686.get_loop_level_number_from_dimension_name("outGPyramid_7_s0_x"));
    t690.after(t689, t686.get_loop_level_number_from_dimension_name("outGPyramid_7_s0_x"));
    t691.after(t690, t686.get_loop_level_number_from_dimension_name("outGPyramid_7_s0_x"));
    t692.after(t691, t686.get_loop_level_number_from_dimension_name("outGPyramid_7_s0_x"));
    t693.after(t692, t686.get_loop_level_number_from_dimension_name("outGPyramid_7_s0_x"));
    t694.after(t693, t686.get_loop_level_number_from_dimension_name("outGPyramid_7_s0_x"));
    t695.after(t694, t686.get_loop_level_number_from_dimension_name("outGPyramid_7_s0_x"));
    t696.after(t695, t686.get_loop_level_number_from_dimension_name("outGPyramid_7_s0_x"));
    t697.after(t696, t686.get_loop_level_number_from_dimension_name("outGPyramid_7_s0_x"));
    t698.after(t697, t686.get_loop_level_number_from_dimension_name("outGPyramid_7_s0_x"));
    t699.after(t698, t686.get_loop_level_number_from_dimension_name("outGPyramid_7_s0_x"));
    t700.after(t699, t686.get_loop_level_number_from_dimension_name("outGPyramid_7_s0_x"));
    t701.after(t700, t686.get_loop_level_number_from_dimension_name("outGPyramid_7_s0_x"));
    t702.after(t701, t686.get_loop_level_number_from_dimension_name("outGPyramid_7_s0_x"));
    t703.after(t702, t686.get_loop_level_number_from_dimension_name("outGPyramid_7_s0_x"));

    // Define compute level for "outGPyramid_6".
    outGPyramid_6_s0.after(t703, t686.get_loop_level_number_from_dimension_name("outGPyramid_7_s0_x"));

    // Define temporary buffers for "outGPyramid_5".
    tiramisu::buffer buff_outGPyramid_5("buff_outGPyramid_5", {((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)157)) / tiramisu::expr((int32_t)32)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)157)) / tiramisu::expr((int32_t)32))}, tiramisu::p_float32, tiramisu::a_temporary, &laplacian_tiramisu);

    // Define store level for "buff_outGPyramid_5".

    // Define loop bounds for dimension "outGPyramid_5_s0_y".
    tiramisu::constant outGPyramid_5_s0_y_loop_min("outGPyramid_5_s0_y_loop_min", tiramisu::expr((int32_t)-2), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant outGPyramid_5_s0_y_loop_extent("outGPyramid_5_s0_y_loop_extent", ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)157)) / tiramisu::expr((int32_t)32)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);

    // Define loop bounds for dimension "outGPyramid_5_s0_x".
    tiramisu::constant outGPyramid_5_s0_x_loop_min("outGPyramid_5_s0_x_loop_min", tiramisu::expr((int32_t)-2), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant outGPyramid_5_s0_x_loop_extent("outGPyramid_5_s0_x_loop_extent", ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)157)) / tiramisu::expr((int32_t)32)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::computation outGPyramid_5_s0(
        "[outGPyramid_5_s0_y_loop_min, outGPyramid_5_s0_y_loop_extent, outGPyramid_5_s0_x_loop_min, outGPyramid_5_s0_x_loop_extent]->{outGPyramid_5_s0[outGPyramid_5_s0_y, outGPyramid_5_s0_x]: "
        "(outGPyramid_5_s0_y_loop_min <= outGPyramid_5_s0_y <= ((outGPyramid_5_s0_y_loop_min + outGPyramid_5_s0_y_loop_extent) + -1)) and (outGPyramid_5_s0_x_loop_min <= outGPyramid_5_s0_x <= ((outGPyramid_5_s0_x_loop_min + outGPyramid_5_s0_x_loop_extent) + -1))}",
        tiramisu::expr(), true, tiramisu::p_float32, &laplacian_tiramisu);
    tiramisu::constant t704("t704", (tiramisu::var("outGPyramid_5_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_5_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t705("t705", (tiramisu::var("outGPyramid_5_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_5_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t706("t706", (tiramisu::var("outGPyramid_5_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_5_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t707("t707", (tiramisu::var("outGPyramid_5_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_5_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t708("t708", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_5_s0(tiramisu::var("outGPyramid_5_s0_y"), tiramisu::var("outGPyramid_5_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_5_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t709("t709", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_5_s0(tiramisu::var("outGPyramid_5_s0_y"), tiramisu::var("outGPyramid_5_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_5_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t710("t710", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_5_s0(tiramisu::var("outGPyramid_5_s0_y"), tiramisu::var("outGPyramid_5_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_5_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t711("t711", (tiramisu::var("outGPyramid_5_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_5_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t712("t712", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_5_s0(tiramisu::var("outGPyramid_5_s0_y"), tiramisu::var("outGPyramid_5_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_5_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t713("t713", (tiramisu::var("outGPyramid_5_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_5_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t714("t714", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_5_s0(tiramisu::var("outGPyramid_5_s0_y"), tiramisu::var("outGPyramid_5_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_5_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t715("t715", (tiramisu::var("outGPyramid_5_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_5_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t716("t716", (tiramisu::var("outGPyramid_5_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_5_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t717("t717", (tiramisu::var("outGPyramid_5_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_5_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t718("t718", (tiramisu::var("outGPyramid_5_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_5_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t719("t719", (tiramisu::var("outGPyramid_5_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_5_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t720("t720", (tiramisu::var("outGPyramid_5_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_5_s0, 1, &laplacian_tiramisu);
    outGPyramid_5_s0.set_expression((((((outGPyramid_6_s0((((tiramisu::var("outGPyramid_5_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_5_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), (((tiramisu::var("outGPyramid_5_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_5_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (outGPyramid_6_s0((((tiramisu::var("outGPyramid_5_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_5_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), t704) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.25)) + (((outGPyramid_6_s0(t705, (((tiramisu::var("outGPyramid_5_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_5_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (outGPyramid_6_s0(t706, t707) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.75))) + (((tiramisu::expr((float)1) - ((inGPyramid_5_s0(tiramisu::var("outGPyramid_5_s0_y"), tiramisu::var("outGPyramid_5_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) - tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_5_s0(tiramisu::var("outGPyramid_5_s0_y"), tiramisu::var("outGPyramid_5_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0))))) * (gPyramid_5_s0(t708, tiramisu::var("outGPyramid_5_s0_y"), tiramisu::var("outGPyramid_5_s0_x")) - ((((gPyramid_6_s0(t709, (((tiramisu::var("outGPyramid_5_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_5_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), (((tiramisu::var("outGPyramid_5_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_5_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (gPyramid_6_s0(t710, (((tiramisu::var("outGPyramid_5_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_5_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), t711) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.25)) + (((gPyramid_6_s0(t712, t713, (((tiramisu::var("outGPyramid_5_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_5_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (gPyramid_6_s0(t714, t715, t716) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.75))))) + (((inGPyramid_5_s0(tiramisu::var("outGPyramid_5_s0_y"), tiramisu::var("outGPyramid_5_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) - tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_5_s0(tiramisu::var("outGPyramid_5_s0_y"), tiramisu::var("outGPyramid_5_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)))) * (gPyramid_5_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_5_s0(tiramisu::var("outGPyramid_5_s0_y"), tiramisu::var("outGPyramid_5_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), tiramisu::var("outGPyramid_5_s0_y"), tiramisu::var("outGPyramid_5_s0_x")) - ((((gPyramid_6_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_5_s0(tiramisu::var("outGPyramid_5_s0_y"), tiramisu::var("outGPyramid_5_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), (((tiramisu::var("outGPyramid_5_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_5_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), (((tiramisu::var("outGPyramid_5_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_5_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (gPyramid_6_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_5_s0(tiramisu::var("outGPyramid_5_s0_y"), tiramisu::var("outGPyramid_5_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), (((tiramisu::var("outGPyramid_5_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_5_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), t717) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.25)) + (((gPyramid_6_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_5_s0(tiramisu::var("outGPyramid_5_s0_y"), tiramisu::var("outGPyramid_5_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), t718, (((tiramisu::var("outGPyramid_5_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_5_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (gPyramid_6_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_5_s0(tiramisu::var("outGPyramid_5_s0_y"), tiramisu::var("outGPyramid_5_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), t719, t720) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.75))))))));
    outGPyramid_5_s0.set_access("{outGPyramid_5_s0[outGPyramid_5_s0_y, outGPyramid_5_s0_x]->buff_outGPyramid_5[outGPyramid_5_s0_y, outGPyramid_5_s0_x]}");

    // Define compute order for constants of "outGPyramid_5_s0".
    t704.after(t703, t703.get_loop_level_number_from_dimension_name("outGPyramid_6_s0_x"));
    t705.after(t704, t703.get_loop_level_number_from_dimension_name("outGPyramid_6_s0_x"));
    t706.after(t705, t703.get_loop_level_number_from_dimension_name("outGPyramid_6_s0_x"));
    t707.after(t706, t703.get_loop_level_number_from_dimension_name("outGPyramid_6_s0_x"));
    t708.after(t707, t703.get_loop_level_number_from_dimension_name("outGPyramid_6_s0_x"));
    t709.after(t708, t703.get_loop_level_number_from_dimension_name("outGPyramid_6_s0_x"));
    t710.after(t709, t703.get_loop_level_number_from_dimension_name("outGPyramid_6_s0_x"));
    t711.after(t710, t703.get_loop_level_number_from_dimension_name("outGPyramid_6_s0_x"));
    t712.after(t711, t703.get_loop_level_number_from_dimension_name("outGPyramid_6_s0_x"));
    t713.after(t712, t703.get_loop_level_number_from_dimension_name("outGPyramid_6_s0_x"));
    t714.after(t713, t703.get_loop_level_number_from_dimension_name("outGPyramid_6_s0_x"));
    t715.after(t714, t703.get_loop_level_number_from_dimension_name("outGPyramid_6_s0_x"));
    t716.after(t715, t703.get_loop_level_number_from_dimension_name("outGPyramid_6_s0_x"));
    t717.after(t716, t703.get_loop_level_number_from_dimension_name("outGPyramid_6_s0_x"));
    t718.after(t717, t703.get_loop_level_number_from_dimension_name("outGPyramid_6_s0_x"));
    t719.after(t718, t703.get_loop_level_number_from_dimension_name("outGPyramid_6_s0_x"));
    t720.after(t719, t703.get_loop_level_number_from_dimension_name("outGPyramid_6_s0_x"));

    // Define compute level for "outGPyramid_5".
    outGPyramid_5_s0.after(t720, t703.get_loop_level_number_from_dimension_name("outGPyramid_6_s0_x"));

    // Define temporary buffers for "outGPyramid_4".
    tiramisu::buffer buff_outGPyramid_4("buff_outGPyramid_4", {((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)77)) / tiramisu::expr((int32_t)16)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)77)) / tiramisu::expr((int32_t)16))}, tiramisu::p_float32, tiramisu::a_temporary, &laplacian_tiramisu);

    // Define store level for "buff_outGPyramid_4".

    // Define loop bounds for dimension "outGPyramid_4_s0_y".
    tiramisu::constant outGPyramid_4_s0_y_loop_min("outGPyramid_4_s0_y_loop_min", tiramisu::expr((int32_t)-2), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant outGPyramid_4_s0_y_loop_extent("outGPyramid_4_s0_y_loop_extent", ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)77)) / tiramisu::expr((int32_t)16)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);

    // Define loop bounds for dimension "outGPyramid_4_s0_x".
    tiramisu::constant outGPyramid_4_s0_x_loop_min("outGPyramid_4_s0_x_loop_min", tiramisu::expr((int32_t)-2), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant outGPyramid_4_s0_x_loop_extent("outGPyramid_4_s0_x_loop_extent", ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)77)) / tiramisu::expr((int32_t)16)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::computation outGPyramid_4_s0(
        "[outGPyramid_4_s0_y_loop_min, outGPyramid_4_s0_y_loop_extent, outGPyramid_4_s0_x_loop_min, outGPyramid_4_s0_x_loop_extent]->{outGPyramid_4_s0[outGPyramid_4_s0_y, outGPyramid_4_s0_x]: "
        "(outGPyramid_4_s0_y_loop_min <= outGPyramid_4_s0_y <= ((outGPyramid_4_s0_y_loop_min + outGPyramid_4_s0_y_loop_extent) + -1)) and (outGPyramid_4_s0_x_loop_min <= outGPyramid_4_s0_x <= ((outGPyramid_4_s0_x_loop_min + outGPyramid_4_s0_x_loop_extent) + -1))}",
        tiramisu::expr(), true, tiramisu::p_float32, &laplacian_tiramisu);
    tiramisu::constant t721("t721", (tiramisu::var("outGPyramid_4_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_4_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t722("t722", (tiramisu::var("outGPyramid_4_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_4_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t723("t723", (tiramisu::var("outGPyramid_4_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_4_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t724("t724", (tiramisu::var("outGPyramid_4_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_4_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t725("t725", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_4_s0(tiramisu::var("outGPyramid_4_s0_y"), tiramisu::var("outGPyramid_4_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_4_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t726("t726", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_4_s0(tiramisu::var("outGPyramid_4_s0_y"), tiramisu::var("outGPyramid_4_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_4_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t727("t727", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_4_s0(tiramisu::var("outGPyramid_4_s0_y"), tiramisu::var("outGPyramid_4_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_4_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t728("t728", (tiramisu::var("outGPyramid_4_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_4_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t729("t729", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_4_s0(tiramisu::var("outGPyramid_4_s0_y"), tiramisu::var("outGPyramid_4_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_4_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t730("t730", (tiramisu::var("outGPyramid_4_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_4_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t731("t731", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_4_s0(tiramisu::var("outGPyramid_4_s0_y"), tiramisu::var("outGPyramid_4_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_4_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t732("t732", (tiramisu::var("outGPyramid_4_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_4_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t733("t733", (tiramisu::var("outGPyramid_4_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_4_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t734("t734", (tiramisu::var("outGPyramid_4_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_4_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t735("t735", (tiramisu::var("outGPyramid_4_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_4_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t736("t736", (tiramisu::var("outGPyramid_4_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_4_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t737("t737", (tiramisu::var("outGPyramid_4_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_4_s0, 1, &laplacian_tiramisu);
    outGPyramid_4_s0.set_expression((((((outGPyramid_5_s0((((tiramisu::var("outGPyramid_4_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_4_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), (((tiramisu::var("outGPyramid_4_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_4_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (outGPyramid_5_s0((((tiramisu::var("outGPyramid_4_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_4_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), t721) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.25)) + (((outGPyramid_5_s0(t722, (((tiramisu::var("outGPyramid_4_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_4_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (outGPyramid_5_s0(t723, t724) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.75))) + (((tiramisu::expr((float)1) - ((inGPyramid_4_s0(tiramisu::var("outGPyramid_4_s0_y"), tiramisu::var("outGPyramid_4_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) - tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_4_s0(tiramisu::var("outGPyramid_4_s0_y"), tiramisu::var("outGPyramid_4_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0))))) * (gPyramid_4_s0(t725, tiramisu::var("outGPyramid_4_s0_y"), tiramisu::var("outGPyramid_4_s0_x")) - ((((gPyramid_5_s0(t726, (((tiramisu::var("outGPyramid_4_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_4_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), (((tiramisu::var("outGPyramid_4_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_4_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (gPyramid_5_s0(t727, (((tiramisu::var("outGPyramid_4_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_4_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), t728) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.25)) + (((gPyramid_5_s0(t729, t730, (((tiramisu::var("outGPyramid_4_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_4_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (gPyramid_5_s0(t731, t732, t733) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.75))))) + (((inGPyramid_4_s0(tiramisu::var("outGPyramid_4_s0_y"), tiramisu::var("outGPyramid_4_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) - tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_4_s0(tiramisu::var("outGPyramid_4_s0_y"), tiramisu::var("outGPyramid_4_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)))) * (gPyramid_4_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_4_s0(tiramisu::var("outGPyramid_4_s0_y"), tiramisu::var("outGPyramid_4_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), tiramisu::var("outGPyramid_4_s0_y"), tiramisu::var("outGPyramid_4_s0_x")) - ((((gPyramid_5_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_4_s0(tiramisu::var("outGPyramid_4_s0_y"), tiramisu::var("outGPyramid_4_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), (((tiramisu::var("outGPyramid_4_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_4_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), (((tiramisu::var("outGPyramid_4_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_4_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (gPyramid_5_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_4_s0(tiramisu::var("outGPyramid_4_s0_y"), tiramisu::var("outGPyramid_4_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), (((tiramisu::var("outGPyramid_4_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_4_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), t734) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.25)) + (((gPyramid_5_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_4_s0(tiramisu::var("outGPyramid_4_s0_y"), tiramisu::var("outGPyramid_4_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), t735, (((tiramisu::var("outGPyramid_4_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_4_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (gPyramid_5_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_4_s0(tiramisu::var("outGPyramid_4_s0_y"), tiramisu::var("outGPyramid_4_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), t736, t737) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.75))))))));
    outGPyramid_4_s0.set_access("{outGPyramid_4_s0[outGPyramid_4_s0_y, outGPyramid_4_s0_x]->buff_outGPyramid_4[outGPyramid_4_s0_y, outGPyramid_4_s0_x]}");

    // Define compute order for constants of "outGPyramid_4_s0".
    t721.after(t720, t720.get_loop_level_number_from_dimension_name("outGPyramid_5_s0_x"));
    t722.after(t721, t720.get_loop_level_number_from_dimension_name("outGPyramid_5_s0_x"));
    t723.after(t722, t720.get_loop_level_number_from_dimension_name("outGPyramid_5_s0_x"));
    t724.after(t723, t720.get_loop_level_number_from_dimension_name("outGPyramid_5_s0_x"));
    t725.after(t724, t720.get_loop_level_number_from_dimension_name("outGPyramid_5_s0_x"));
    t726.after(t725, t720.get_loop_level_number_from_dimension_name("outGPyramid_5_s0_x"));
    t727.after(t726, t720.get_loop_level_number_from_dimension_name("outGPyramid_5_s0_x"));
    t728.after(t727, t720.get_loop_level_number_from_dimension_name("outGPyramid_5_s0_x"));
    t729.after(t728, t720.get_loop_level_number_from_dimension_name("outGPyramid_5_s0_x"));
    t730.after(t729, t720.get_loop_level_number_from_dimension_name("outGPyramid_5_s0_x"));
    t731.after(t730, t720.get_loop_level_number_from_dimension_name("outGPyramid_5_s0_x"));
    t732.after(t731, t720.get_loop_level_number_from_dimension_name("outGPyramid_5_s0_x"));
    t733.after(t732, t720.get_loop_level_number_from_dimension_name("outGPyramid_5_s0_x"));
    t734.after(t733, t720.get_loop_level_number_from_dimension_name("outGPyramid_5_s0_x"));
    t735.after(t734, t720.get_loop_level_number_from_dimension_name("outGPyramid_5_s0_x"));
    t736.after(t735, t720.get_loop_level_number_from_dimension_name("outGPyramid_5_s0_x"));
    t737.after(t736, t720.get_loop_level_number_from_dimension_name("outGPyramid_5_s0_x"));

    // Define compute level for "outGPyramid_4".
    outGPyramid_4_s0.after(t737, t720.get_loop_level_number_from_dimension_name("outGPyramid_5_s0_x"));

    // Define temporary buffers for "outGPyramid_3".
    tiramisu::buffer buff_outGPyramid_3("buff_outGPyramid_3", {((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)37)) / tiramisu::expr((int32_t)8)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)37)) / tiramisu::expr((int32_t)8))}, tiramisu::p_float32, tiramisu::a_temporary, &laplacian_tiramisu);

    // Define store level for "buff_outGPyramid_3".

    // Define loop bounds for dimension "outGPyramid_3_s0_y".
    tiramisu::constant outGPyramid_3_s0_y_loop_min("outGPyramid_3_s0_y_loop_min", tiramisu::expr((int32_t)-2), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant outGPyramid_3_s0_y_loop_extent("outGPyramid_3_s0_y_loop_extent", ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)37)) / tiramisu::expr((int32_t)8)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);

    // Define loop bounds for dimension "outGPyramid_3_s0_x".
    tiramisu::constant outGPyramid_3_s0_x_loop_min("outGPyramid_3_s0_x_loop_min", tiramisu::expr((int32_t)-2), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant outGPyramid_3_s0_x_loop_extent("outGPyramid_3_s0_x_loop_extent", ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)37)) / tiramisu::expr((int32_t)8)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::computation outGPyramid_3_s0(
        "[outGPyramid_3_s0_y_loop_min, outGPyramid_3_s0_y_loop_extent, outGPyramid_3_s0_x_loop_min, outGPyramid_3_s0_x_loop_extent]->{outGPyramid_3_s0[outGPyramid_3_s0_y, outGPyramid_3_s0_x]: "
        "(outGPyramid_3_s0_y_loop_min <= outGPyramid_3_s0_y <= ((outGPyramid_3_s0_y_loop_min + outGPyramid_3_s0_y_loop_extent) + -1)) and (outGPyramid_3_s0_x_loop_min <= outGPyramid_3_s0_x <= ((outGPyramid_3_s0_x_loop_min + outGPyramid_3_s0_x_loop_extent) + -1))}",
        tiramisu::expr(), true, tiramisu::p_float32, &laplacian_tiramisu);
    tiramisu::constant t738("t738", (tiramisu::var("outGPyramid_3_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_3_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t739("t739", (tiramisu::var("outGPyramid_3_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_3_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t740("t740", (tiramisu::var("outGPyramid_3_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_3_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t741("t741", (tiramisu::var("outGPyramid_3_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_3_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t742("t742", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_3_s0(tiramisu::var("outGPyramid_3_s0_y"), tiramisu::var("outGPyramid_3_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_3_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t743("t743", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_3_s0(tiramisu::var("outGPyramid_3_s0_y"), tiramisu::var("outGPyramid_3_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_3_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t744("t744", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_3_s0(tiramisu::var("outGPyramid_3_s0_y"), tiramisu::var("outGPyramid_3_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_3_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t745("t745", (tiramisu::var("outGPyramid_3_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_3_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t746("t746", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_3_s0(tiramisu::var("outGPyramid_3_s0_y"), tiramisu::var("outGPyramid_3_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_3_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t747("t747", (tiramisu::var("outGPyramid_3_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_3_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t748("t748", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_3_s0(tiramisu::var("outGPyramid_3_s0_y"), tiramisu::var("outGPyramid_3_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_3_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t749("t749", (tiramisu::var("outGPyramid_3_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_3_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t750("t750", (tiramisu::var("outGPyramid_3_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_3_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t751("t751", (tiramisu::var("outGPyramid_3_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_3_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t752("t752", (tiramisu::var("outGPyramid_3_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_3_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t753("t753", (tiramisu::var("outGPyramid_3_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_3_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t754("t754", (tiramisu::var("outGPyramid_3_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_3_s0, 1, &laplacian_tiramisu);
    outGPyramid_3_s0.set_expression((((((outGPyramid_4_s0((((tiramisu::var("outGPyramid_3_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_3_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), (((tiramisu::var("outGPyramid_3_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_3_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (outGPyramid_4_s0((((tiramisu::var("outGPyramid_3_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_3_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), t738) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.25)) + (((outGPyramid_4_s0(t739, (((tiramisu::var("outGPyramid_3_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_3_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (outGPyramid_4_s0(t740, t741) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.75))) + (((tiramisu::expr((float)1) - ((inGPyramid_3_s0(tiramisu::var("outGPyramid_3_s0_y"), tiramisu::var("outGPyramid_3_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) - tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_3_s0(tiramisu::var("outGPyramid_3_s0_y"), tiramisu::var("outGPyramid_3_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0))))) * (gPyramid_3_s0(t742, tiramisu::var("outGPyramid_3_s0_y"), tiramisu::var("outGPyramid_3_s0_x")) - ((((gPyramid_4_s0(t743, (((tiramisu::var("outGPyramid_3_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_3_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), (((tiramisu::var("outGPyramid_3_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_3_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (gPyramid_4_s0(t744, (((tiramisu::var("outGPyramid_3_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_3_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), t745) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.25)) + (((gPyramid_4_s0(t746, t747, (((tiramisu::var("outGPyramid_3_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_3_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (gPyramid_4_s0(t748, t749, t750) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.75))))) + (((inGPyramid_3_s0(tiramisu::var("outGPyramid_3_s0_y"), tiramisu::var("outGPyramid_3_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) - tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_3_s0(tiramisu::var("outGPyramid_3_s0_y"), tiramisu::var("outGPyramid_3_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)))) * (gPyramid_3_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_3_s0(tiramisu::var("outGPyramid_3_s0_y"), tiramisu::var("outGPyramid_3_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), tiramisu::var("outGPyramid_3_s0_y"), tiramisu::var("outGPyramid_3_s0_x")) - ((((gPyramid_4_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_3_s0(tiramisu::var("outGPyramid_3_s0_y"), tiramisu::var("outGPyramid_3_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), (((tiramisu::var("outGPyramid_3_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_3_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), (((tiramisu::var("outGPyramid_3_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_3_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (gPyramid_4_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_3_s0(tiramisu::var("outGPyramid_3_s0_y"), tiramisu::var("outGPyramid_3_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), (((tiramisu::var("outGPyramid_3_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_3_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), t751) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.25)) + (((gPyramid_4_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_3_s0(tiramisu::var("outGPyramid_3_s0_y"), tiramisu::var("outGPyramid_3_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), t752, (((tiramisu::var("outGPyramid_3_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_3_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (gPyramid_4_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_3_s0(tiramisu::var("outGPyramid_3_s0_y"), tiramisu::var("outGPyramid_3_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), t753, t754) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.75))))))));
    outGPyramid_3_s0.set_access("{outGPyramid_3_s0[outGPyramid_3_s0_y, outGPyramid_3_s0_x]->buff_outGPyramid_3[outGPyramid_3_s0_y, outGPyramid_3_s0_x]}");

    // Define compute order for constants of "outGPyramid_3_s0".
    t738.after(t737, t737.get_loop_level_number_from_dimension_name("outGPyramid_4_s0_x"));
    t739.after(t738, t737.get_loop_level_number_from_dimension_name("outGPyramid_4_s0_x"));
    t740.after(t739, t737.get_loop_level_number_from_dimension_name("outGPyramid_4_s0_x"));
    t741.after(t740, t737.get_loop_level_number_from_dimension_name("outGPyramid_4_s0_x"));
    t742.after(t741, t737.get_loop_level_number_from_dimension_name("outGPyramid_4_s0_x"));
    t743.after(t742, t737.get_loop_level_number_from_dimension_name("outGPyramid_4_s0_x"));
    t744.after(t743, t737.get_loop_level_number_from_dimension_name("outGPyramid_4_s0_x"));
    t745.after(t744, t737.get_loop_level_number_from_dimension_name("outGPyramid_4_s0_x"));
    t746.after(t745, t737.get_loop_level_number_from_dimension_name("outGPyramid_4_s0_x"));
    t747.after(t746, t737.get_loop_level_number_from_dimension_name("outGPyramid_4_s0_x"));
    t748.after(t747, t737.get_loop_level_number_from_dimension_name("outGPyramid_4_s0_x"));
    t749.after(t748, t737.get_loop_level_number_from_dimension_name("outGPyramid_4_s0_x"));
    t750.after(t749, t737.get_loop_level_number_from_dimension_name("outGPyramid_4_s0_x"));
    t751.after(t750, t737.get_loop_level_number_from_dimension_name("outGPyramid_4_s0_x"));
    t752.after(t751, t737.get_loop_level_number_from_dimension_name("outGPyramid_4_s0_x"));
    t753.after(t752, t737.get_loop_level_number_from_dimension_name("outGPyramid_4_s0_x"));
    t754.after(t753, t737.get_loop_level_number_from_dimension_name("outGPyramid_4_s0_x"));

    // Define compute level for "outGPyramid_3".
    outGPyramid_3_s0.after(t754, t737.get_loop_level_number_from_dimension_name("outGPyramid_4_s0_x"));

    // Define temporary buffers for "outGPyramid_2".
    tiramisu::buffer buff_outGPyramid_2("buff_outGPyramid_2", {((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)17)) / tiramisu::expr((int32_t)4)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)17)) / tiramisu::expr((int32_t)4))}, tiramisu::p_float32, tiramisu::a_temporary, &laplacian_tiramisu);

    // Define store level for "buff_outGPyramid_2".

    // Define loop bounds for dimension "outGPyramid_2_s0_y".
    tiramisu::constant outGPyramid_2_s0_y_loop_min("outGPyramid_2_s0_y_loop_min", tiramisu::expr((int32_t)-2), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant outGPyramid_2_s0_y_loop_extent("outGPyramid_2_s0_y_loop_extent", ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)17)) / tiramisu::expr((int32_t)4)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);

    // Define loop bounds for dimension "outGPyramid_2_s0_x".
    tiramisu::constant outGPyramid_2_s0_x_loop_min("outGPyramid_2_s0_x_loop_min", tiramisu::expr((int32_t)-2), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant outGPyramid_2_s0_x_loop_extent("outGPyramid_2_s0_x_loop_extent", ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)17)) / tiramisu::expr((int32_t)4)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::computation outGPyramid_2_s0(
        "[outGPyramid_2_s0_y_loop_min, outGPyramid_2_s0_y_loop_extent, outGPyramid_2_s0_x_loop_min, outGPyramid_2_s0_x_loop_extent]->{outGPyramid_2_s0[outGPyramid_2_s0_y, outGPyramid_2_s0_x]: "
        "(outGPyramid_2_s0_y_loop_min <= outGPyramid_2_s0_y <= ((outGPyramid_2_s0_y_loop_min + outGPyramid_2_s0_y_loop_extent) + -1)) and (outGPyramid_2_s0_x_loop_min <= outGPyramid_2_s0_x <= ((outGPyramid_2_s0_x_loop_min + outGPyramid_2_s0_x_loop_extent) + -1))}",
        tiramisu::expr(), true, tiramisu::p_float32, &laplacian_tiramisu);
    tiramisu::constant t755("t755", (tiramisu::var("outGPyramid_2_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_2_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t756("t756", (tiramisu::var("outGPyramid_2_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_2_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t757("t757", (tiramisu::var("outGPyramid_2_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_2_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t758("t758", (tiramisu::var("outGPyramid_2_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_2_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t759("t759", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_2_s0(tiramisu::var("outGPyramid_2_s0_y"), tiramisu::var("outGPyramid_2_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_2_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t760("t760", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_2_s0(tiramisu::var("outGPyramid_2_s0_y"), tiramisu::var("outGPyramid_2_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_2_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t761("t761", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_2_s0(tiramisu::var("outGPyramid_2_s0_y"), tiramisu::var("outGPyramid_2_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_2_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t762("t762", (tiramisu::var("outGPyramid_2_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_2_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t763("t763", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_2_s0(tiramisu::var("outGPyramid_2_s0_y"), tiramisu::var("outGPyramid_2_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_2_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t764("t764", (tiramisu::var("outGPyramid_2_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_2_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t765("t765", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_2_s0(tiramisu::var("outGPyramid_2_s0_y"), tiramisu::var("outGPyramid_2_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_2_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t766("t766", (tiramisu::var("outGPyramid_2_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_2_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t767("t767", (tiramisu::var("outGPyramid_2_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_2_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t768("t768", (tiramisu::var("outGPyramid_2_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_2_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t769("t769", (tiramisu::var("outGPyramid_2_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_2_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t770("t770", (tiramisu::var("outGPyramid_2_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_2_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t771("t771", (tiramisu::var("outGPyramid_2_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_2_s0, 1, &laplacian_tiramisu);
    outGPyramid_2_s0.set_expression((((((outGPyramid_3_s0((((tiramisu::var("outGPyramid_2_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_2_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), (((tiramisu::var("outGPyramid_2_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_2_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (outGPyramid_3_s0((((tiramisu::var("outGPyramid_2_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_2_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), t755) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.25)) + (((outGPyramid_3_s0(t756, (((tiramisu::var("outGPyramid_2_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_2_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (outGPyramid_3_s0(t757, t758) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.75))) + (((tiramisu::expr((float)1) - ((inGPyramid_2_s0(tiramisu::var("outGPyramid_2_s0_y"), tiramisu::var("outGPyramid_2_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) - tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_2_s0(tiramisu::var("outGPyramid_2_s0_y"), tiramisu::var("outGPyramid_2_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0))))) * (gPyramid_2_s0(t759, tiramisu::var("outGPyramid_2_s0_y"), tiramisu::var("outGPyramid_2_s0_x")) - ((((gPyramid_3_s0(t760, (((tiramisu::var("outGPyramid_2_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_2_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), (((tiramisu::var("outGPyramid_2_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_2_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (gPyramid_3_s0(t761, (((tiramisu::var("outGPyramid_2_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_2_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), t762) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.25)) + (((gPyramid_3_s0(t763, t764, (((tiramisu::var("outGPyramid_2_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_2_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (gPyramid_3_s0(t765, t766, t767) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.75))))) + (((inGPyramid_2_s0(tiramisu::var("outGPyramid_2_s0_y"), tiramisu::var("outGPyramid_2_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) - tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_2_s0(tiramisu::var("outGPyramid_2_s0_y"), tiramisu::var("outGPyramid_2_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)))) * (gPyramid_2_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_2_s0(tiramisu::var("outGPyramid_2_s0_y"), tiramisu::var("outGPyramid_2_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), tiramisu::var("outGPyramid_2_s0_y"), tiramisu::var("outGPyramid_2_s0_x")) - ((((gPyramid_3_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_2_s0(tiramisu::var("outGPyramid_2_s0_y"), tiramisu::var("outGPyramid_2_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), (((tiramisu::var("outGPyramid_2_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_2_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), (((tiramisu::var("outGPyramid_2_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_2_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (gPyramid_3_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_2_s0(tiramisu::var("outGPyramid_2_s0_y"), tiramisu::var("outGPyramid_2_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), (((tiramisu::var("outGPyramid_2_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_2_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), t768) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.25)) + (((gPyramid_3_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_2_s0(tiramisu::var("outGPyramid_2_s0_y"), tiramisu::var("outGPyramid_2_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), t769, (((tiramisu::var("outGPyramid_2_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_2_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (gPyramid_3_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_2_s0(tiramisu::var("outGPyramid_2_s0_y"), tiramisu::var("outGPyramid_2_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), t770, t771) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.75))))))));
    outGPyramid_2_s0.set_access("{outGPyramid_2_s0[outGPyramid_2_s0_y, outGPyramid_2_s0_x]->buff_outGPyramid_2[outGPyramid_2_s0_y, outGPyramid_2_s0_x]}");

    // Define compute order for constants of "outGPyramid_2_s0".
    t755.after(t754, t754.get_loop_level_number_from_dimension_name("outGPyramid_3_s0_x"));
    t756.after(t755, t754.get_loop_level_number_from_dimension_name("outGPyramid_3_s0_x"));
    t757.after(t756, t754.get_loop_level_number_from_dimension_name("outGPyramid_3_s0_x"));
    t758.after(t757, t754.get_loop_level_number_from_dimension_name("outGPyramid_3_s0_x"));
    t759.after(t758, t754.get_loop_level_number_from_dimension_name("outGPyramid_3_s0_x"));
    t760.after(t759, t754.get_loop_level_number_from_dimension_name("outGPyramid_3_s0_x"));
    t761.after(t760, t754.get_loop_level_number_from_dimension_name("outGPyramid_3_s0_x"));
    t762.after(t761, t754.get_loop_level_number_from_dimension_name("outGPyramid_3_s0_x"));
    t763.after(t762, t754.get_loop_level_number_from_dimension_name("outGPyramid_3_s0_x"));
    t764.after(t763, t754.get_loop_level_number_from_dimension_name("outGPyramid_3_s0_x"));
    t765.after(t764, t754.get_loop_level_number_from_dimension_name("outGPyramid_3_s0_x"));
    t766.after(t765, t754.get_loop_level_number_from_dimension_name("outGPyramid_3_s0_x"));
    t767.after(t766, t754.get_loop_level_number_from_dimension_name("outGPyramid_3_s0_x"));
    t768.after(t767, t754.get_loop_level_number_from_dimension_name("outGPyramid_3_s0_x"));
    t769.after(t768, t754.get_loop_level_number_from_dimension_name("outGPyramid_3_s0_x"));
    t770.after(t769, t754.get_loop_level_number_from_dimension_name("outGPyramid_3_s0_x"));
    t771.after(t770, t754.get_loop_level_number_from_dimension_name("outGPyramid_3_s0_x"));

    // Define compute level for "outGPyramid_2".
    outGPyramid_2_s0.after(t771, t754.get_loop_level_number_from_dimension_name("outGPyramid_3_s0_x"));

    // Define temporary buffers for "outGPyramid_1".
    tiramisu::buffer buff_outGPyramid_1("buff_outGPyramid_1", {((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)5)) / tiramisu::expr((int32_t)2)), ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)5)) / tiramisu::expr((int32_t)2))}, tiramisu::p_float32, tiramisu::a_temporary, &laplacian_tiramisu);

    // Define store level for "buff_outGPyramid_1".

    // Define loop bounds for dimension "outGPyramid_1_s0_y".
    tiramisu::constant outGPyramid_1_s0_y_loop_min("outGPyramid_1_s0_y_loop_min", tiramisu::expr((int32_t)-1), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant outGPyramid_1_s0_y_loop_extent("outGPyramid_1_s0_y_loop_extent", ((tiramisu::expr(local_laplacian_extent_1) + tiramisu::expr((int32_t)5)) / tiramisu::expr((int32_t)2)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);

    // Define loop bounds for dimension "outGPyramid_1_s0_x".
    tiramisu::constant outGPyramid_1_s0_x_loop_min("outGPyramid_1_s0_x_loop_min", tiramisu::expr((int32_t)-1), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant outGPyramid_1_s0_x_loop_extent("outGPyramid_1_s0_x_loop_extent", ((tiramisu::expr(local_laplacian_extent_0) + tiramisu::expr((int32_t)5)) / tiramisu::expr((int32_t)2)), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::computation outGPyramid_1_s0(
        "[outGPyramid_1_s0_y_loop_min, outGPyramid_1_s0_y_loop_extent, outGPyramid_1_s0_x_loop_min, outGPyramid_1_s0_x_loop_extent]->{outGPyramid_1_s0[outGPyramid_1_s0_y, outGPyramid_1_s0_x]: "
        "(outGPyramid_1_s0_y_loop_min <= outGPyramid_1_s0_y <= ((outGPyramid_1_s0_y_loop_min + outGPyramid_1_s0_y_loop_extent) + -1)) and (outGPyramid_1_s0_x_loop_min <= outGPyramid_1_s0_x <= ((outGPyramid_1_s0_x_loop_min + outGPyramid_1_s0_x_loop_extent) + -1))}",
        tiramisu::expr(), true, tiramisu::p_float32, &laplacian_tiramisu);
    tiramisu::constant t772("t772", (tiramisu::var("outGPyramid_1_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t773("t773", (tiramisu::var("outGPyramid_1_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t774("t774", (tiramisu::var("outGPyramid_1_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t775("t775", (tiramisu::var("outGPyramid_1_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t776("t776", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_1_s0(tiramisu::var("outGPyramid_1_s0_y"), tiramisu::var("outGPyramid_1_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t777("t777", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_1_s0(tiramisu::var("outGPyramid_1_s0_y"), tiramisu::var("outGPyramid_1_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t778("t778", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_1_s0(tiramisu::var("outGPyramid_1_s0_y"), tiramisu::var("outGPyramid_1_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t779("t779", (tiramisu::var("outGPyramid_1_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t780("t780", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_1_s0(tiramisu::var("outGPyramid_1_s0_y"), tiramisu::var("outGPyramid_1_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t781("t781", (tiramisu::var("outGPyramid_1_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t782("t782", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_1_s0(tiramisu::var("outGPyramid_1_s0_y"), tiramisu::var("outGPyramid_1_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t783("t783", (tiramisu::var("outGPyramid_1_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t784("t784", (tiramisu::var("outGPyramid_1_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t785("t785", (tiramisu::var("outGPyramid_1_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t786("t786", (tiramisu::var("outGPyramid_1_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t787("t787", (tiramisu::var("outGPyramid_1_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_1_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t788("t788", (tiramisu::var("outGPyramid_1_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_1_s0, 1, &laplacian_tiramisu);
    outGPyramid_1_s0.set_expression((((((outGPyramid_2_s0((((tiramisu::var("outGPyramid_1_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_1_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), (((tiramisu::var("outGPyramid_1_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_1_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (outGPyramid_2_s0((((tiramisu::var("outGPyramid_1_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_1_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), t772) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.25)) + (((outGPyramid_2_s0(t773, (((tiramisu::var("outGPyramid_1_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_1_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (outGPyramid_2_s0(t774, t775) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.75))) + (((tiramisu::expr((float)1) - ((inGPyramid_1_s0(tiramisu::var("outGPyramid_1_s0_y"), tiramisu::var("outGPyramid_1_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) - tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_1_s0(tiramisu::var("outGPyramid_1_s0_y"), tiramisu::var("outGPyramid_1_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0))))) * (gPyramid_1_s0(t776, tiramisu::var("outGPyramid_1_s0_y"), tiramisu::var("outGPyramid_1_s0_x")) - ((((gPyramid_2_s0(t777, (((tiramisu::var("outGPyramid_1_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_1_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), (((tiramisu::var("outGPyramid_1_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_1_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (gPyramid_2_s0(t778, (((tiramisu::var("outGPyramid_1_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_1_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), t779) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.25)) + (((gPyramid_2_s0(t780, t781, (((tiramisu::var("outGPyramid_1_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_1_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (gPyramid_2_s0(t782, t783, t784) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.75))))) + (((inGPyramid_1_s0(tiramisu::var("outGPyramid_1_s0_y"), tiramisu::var("outGPyramid_1_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) - tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_1_s0(tiramisu::var("outGPyramid_1_s0_y"), tiramisu::var("outGPyramid_1_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)))) * (gPyramid_1_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_1_s0(tiramisu::var("outGPyramid_1_s0_y"), tiramisu::var("outGPyramid_1_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), tiramisu::var("outGPyramid_1_s0_y"), tiramisu::var("outGPyramid_1_s0_x")) - ((((gPyramid_2_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_1_s0(tiramisu::var("outGPyramid_1_s0_y"), tiramisu::var("outGPyramid_1_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), (((tiramisu::var("outGPyramid_1_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_1_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), (((tiramisu::var("outGPyramid_1_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_1_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (gPyramid_2_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_1_s0(tiramisu::var("outGPyramid_1_s0_y"), tiramisu::var("outGPyramid_1_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), (((tiramisu::var("outGPyramid_1_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_1_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), t785) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.25)) + (((gPyramid_2_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_1_s0(tiramisu::var("outGPyramid_1_s0_y"), tiramisu::var("outGPyramid_1_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), t786, (((tiramisu::var("outGPyramid_1_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_1_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (gPyramid_2_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (inGPyramid_1_s0(tiramisu::var("outGPyramid_1_s0_y"), tiramisu::var("outGPyramid_1_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), t787, t788) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.75))))))));
    outGPyramid_1_s0.set_access("{outGPyramid_1_s0[outGPyramid_1_s0_y, outGPyramid_1_s0_x]->buff_outGPyramid_1[outGPyramid_1_s0_y, outGPyramid_1_s0_x]}");

    // Define compute order for constants of "outGPyramid_1_s0".
    t772.after(t771, t771.get_loop_level_number_from_dimension_name("outGPyramid_2_s0_x"));
    t773.after(t772, t771.get_loop_level_number_from_dimension_name("outGPyramid_2_s0_x"));
    t774.after(t773, t771.get_loop_level_number_from_dimension_name("outGPyramid_2_s0_x"));
    t775.after(t774, t771.get_loop_level_number_from_dimension_name("outGPyramid_2_s0_x"));
    t776.after(t775, t771.get_loop_level_number_from_dimension_name("outGPyramid_2_s0_x"));
    t777.after(t776, t771.get_loop_level_number_from_dimension_name("outGPyramid_2_s0_x"));
    t778.after(t777, t771.get_loop_level_number_from_dimension_name("outGPyramid_2_s0_x"));
    t779.after(t778, t771.get_loop_level_number_from_dimension_name("outGPyramid_2_s0_x"));
    t780.after(t779, t771.get_loop_level_number_from_dimension_name("outGPyramid_2_s0_x"));
    t781.after(t780, t771.get_loop_level_number_from_dimension_name("outGPyramid_2_s0_x"));
    t782.after(t781, t771.get_loop_level_number_from_dimension_name("outGPyramid_2_s0_x"));
    t783.after(t782, t771.get_loop_level_number_from_dimension_name("outGPyramid_2_s0_x"));
    t784.after(t783, t771.get_loop_level_number_from_dimension_name("outGPyramid_2_s0_x"));
    t785.after(t784, t771.get_loop_level_number_from_dimension_name("outGPyramid_2_s0_x"));
    t786.after(t785, t771.get_loop_level_number_from_dimension_name("outGPyramid_2_s0_x"));
    t787.after(t786, t771.get_loop_level_number_from_dimension_name("outGPyramid_2_s0_x"));
    t788.after(t787, t771.get_loop_level_number_from_dimension_name("outGPyramid_2_s0_x"));

    // Define compute level for "outGPyramid_1".
    outGPyramid_1_s0.after(t788, t771.get_loop_level_number_from_dimension_name("outGPyramid_2_s0_x"));

    // Define temporary buffers for "outGPyramid_0".
    tiramisu::buffer buff_outGPyramid_0("buff_outGPyramid_0", {tiramisu::expr(local_laplacian_extent_1), tiramisu::expr(local_laplacian_extent_0)}, tiramisu::p_float32, tiramisu::a_temporary, &laplacian_tiramisu);

    // Define store level for "buff_outGPyramid_0".

    // Define loop bounds for dimension "outGPyramid_0_s0_y".
    tiramisu::constant outGPyramid_0_s0_y_loop_min("outGPyramid_0_s0_y_loop_min", tiramisu::expr((int32_t)0), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant outGPyramid_0_s0_y_loop_extent("outGPyramid_0_s0_y_loop_extent", tiramisu::expr(local_laplacian_extent_1), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);

    // Define loop bounds for dimension "outGPyramid_0_s0_x".
    tiramisu::constant outGPyramid_0_s0_x_loop_min("outGPyramid_0_s0_x_loop_min", tiramisu::expr((int32_t)0), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant outGPyramid_0_s0_x_loop_extent("outGPyramid_0_s0_x_loop_extent", tiramisu::expr(local_laplacian_extent_0), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::computation outGPyramid_0_s0(
        "[outGPyramid_0_s0_y_loop_min, outGPyramid_0_s0_y_loop_extent, outGPyramid_0_s0_x_loop_min, outGPyramid_0_s0_x_loop_extent]->{outGPyramid_0_s0[outGPyramid_0_s0_y, outGPyramid_0_s0_x]: "
        "(outGPyramid_0_s0_y_loop_min <= outGPyramid_0_s0_y <= ((outGPyramid_0_s0_y_loop_min + outGPyramid_0_s0_y_loop_extent) + -1)) and (outGPyramid_0_s0_x_loop_min <= outGPyramid_0_s0_x <= ((outGPyramid_0_s0_x_loop_min + outGPyramid_0_s0_x_loop_extent) + -1))}",
        tiramisu::expr(), true, tiramisu::p_float32, &laplacian_tiramisu);
    tiramisu::constant t789("t789", (tiramisu::var("outGPyramid_0_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_0_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t790("t790", (tiramisu::var("outGPyramid_0_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_0_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t791("t791", (tiramisu::var("outGPyramid_0_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_0_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t792("t792", (tiramisu::var("outGPyramid_0_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_0_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t793("t793", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (gray_s0(tiramisu::var("outGPyramid_0_s0_y"), tiramisu::var("outGPyramid_0_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_0_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t794("t794", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (gray_s0(tiramisu::var("outGPyramid_0_s0_y"), tiramisu::var("outGPyramid_0_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_0_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t795("t795", (tiramisu::var("outGPyramid_0_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_0_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t796("t796", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (gray_s0(tiramisu::var("outGPyramid_0_s0_y"), tiramisu::var("outGPyramid_0_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_0_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t797("t797", (tiramisu::var("outGPyramid_0_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_0_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t798("t798", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (gray_s0(tiramisu::var("outGPyramid_0_s0_y"), tiramisu::var("outGPyramid_0_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)), tiramisu::p_int32, false, &outGPyramid_0_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t799("t799", (tiramisu::var("outGPyramid_0_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_0_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t800("t800", (tiramisu::var("outGPyramid_0_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_0_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t801("t801", (tiramisu::var("outGPyramid_0_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_0_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t802("t802", (tiramisu::var("outGPyramid_0_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_0_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t803("t803", (tiramisu::var("outGPyramid_0_s0_y") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_0_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t804("t804", (tiramisu::var("outGPyramid_0_s0_x") / tiramisu::expr((int32_t)2)), tiramisu::p_int32, false, &outGPyramid_0_s0, 1, &laplacian_tiramisu);
    outGPyramid_0_s0.set_expression((((((outGPyramid_1_s0((((tiramisu::var("outGPyramid_0_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_0_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), (((tiramisu::var("outGPyramid_0_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_0_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (outGPyramid_1_s0((((tiramisu::var("outGPyramid_0_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_0_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), t789) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.25)) + (((outGPyramid_1_s0(t790, (((tiramisu::var("outGPyramid_0_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_0_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (outGPyramid_1_s0(t791, t792) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.75))) + (((tiramisu::expr((float)1) - ((gray_s0(tiramisu::var("outGPyramid_0_s0_y"), tiramisu::var("outGPyramid_0_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) - tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (gray_s0(tiramisu::var("outGPyramid_0_s0_y"), tiramisu::var("outGPyramid_0_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0))))) * ((((tiramisu::expr(beta) * (gray_s0(tiramisu::var("outGPyramid_0_s0_y"), tiramisu::var("outGPyramid_0_s0_x")) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (gray_s0(tiramisu::var("outGPyramid_0_s0_y"), tiramisu::var("outGPyramid_0_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0))) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))))) + (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (gray_s0(tiramisu::var("outGPyramid_0_s0_y"), tiramisu::var("outGPyramid_0_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0))) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))))) + (((tiramisu::expr(alpha) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(tiramisu::var("outGPyramid_0_s0_y"), tiramisu::var("outGPyramid_0_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (gray_s0(tiramisu::var("outGPyramid_0_s0_y"), tiramisu::var("outGPyramid_0_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00390625)) * tiramisu::expr(o_expo, (((tiramisu::expr((float)0) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(tiramisu::var("outGPyramid_0_s0_y"), tiramisu::var("outGPyramid_0_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (gray_s0(tiramisu::var("outGPyramid_0_s0_y"), tiramisu::var("outGPyramid_0_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) * tiramisu::expr((int32_t)256)))) * tiramisu::expr((float)0.00390625))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(tiramisu::var("outGPyramid_0_s0_y"), tiramisu::var("outGPyramid_0_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (gray_s0(tiramisu::var("outGPyramid_0_s0_y"), tiramisu::var("outGPyramid_0_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) * tiramisu::expr((int32_t)256))))) * tiramisu::expr((float)0.00195312))))) - ((((gPyramid_1_s0(t793, (((tiramisu::var("outGPyramid_0_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_0_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), (((tiramisu::var("outGPyramid_0_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_0_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (gPyramid_1_s0(t794, (((tiramisu::var("outGPyramid_0_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_0_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), t795) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.25)) + (((gPyramid_1_s0(t796, t797, (((tiramisu::var("outGPyramid_0_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_0_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (gPyramid_1_s0(t798, t799, t800) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.75))))) + (((gray_s0(tiramisu::var("outGPyramid_0_s0_y"), tiramisu::var("outGPyramid_0_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) - tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (gray_s0(tiramisu::var("outGPyramid_0_s0_y"), tiramisu::var("outGPyramid_0_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)))) * ((((tiramisu::expr(beta) * (gray_s0(tiramisu::var("outGPyramid_0_s0_y"), tiramisu::var("outGPyramid_0_s0_x")) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (gray_s0(tiramisu::var("outGPyramid_0_s0_y"), tiramisu::var("outGPyramid_0_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1))) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))))) + (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (gray_s0(tiramisu::var("outGPyramid_0_s0_y"), tiramisu::var("outGPyramid_0_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1))) * (tiramisu::expr((float)1) / tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))))) + (((tiramisu::expr(alpha) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, ((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(tiramisu::var("outGPyramid_0_s0_y"), tiramisu::var("outGPyramid_0_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (gray_s0(tiramisu::var("outGPyramid_0_s0_y"), tiramisu::var("outGPyramid_0_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) * tiramisu::expr((int32_t)256))) + tiramisu::expr((int32_t)-256)))) * tiramisu::expr((float)0.00390625)) * tiramisu::expr(o_expo, (((tiramisu::expr((float)0) - (tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, ((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(tiramisu::var("outGPyramid_0_s0_y"), tiramisu::var("outGPyramid_0_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (gray_s0(tiramisu::var("outGPyramid_0_s0_y"), tiramisu::var("outGPyramid_0_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) * tiramisu::expr((int32_t)256))) + tiramisu::expr((int32_t)-256))) * tiramisu::expr((float)0.00390625))) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, ((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, ((gray_s0(tiramisu::var("outGPyramid_0_s0_y"), tiramisu::var("outGPyramid_0_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1)))) * tiramisu::expr((float)256))), ((tiramisu::expr(levels) * tiramisu::expr((int32_t)256)) + tiramisu::expr((int32_t)-256))), tiramisu::expr((int32_t)0)) - (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (gray_s0(tiramisu::var("outGPyramid_0_s0_y"), tiramisu::var("outGPyramid_0_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) * tiramisu::expr((int32_t)256))) + tiramisu::expr((int32_t)-256)))) * tiramisu::expr((float)0.00195312))))) - ((((gPyramid_1_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (gray_s0(tiramisu::var("outGPyramid_0_s0_y"), tiramisu::var("outGPyramid_0_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), (((tiramisu::var("outGPyramid_0_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_0_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), (((tiramisu::var("outGPyramid_0_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_0_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (gPyramid_1_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (gray_s0(tiramisu::var("outGPyramid_0_s0_y"), tiramisu::var("outGPyramid_0_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), (((tiramisu::var("outGPyramid_0_s0_y") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_0_s0_y") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1)), t801) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.25)) + (((gPyramid_1_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (gray_s0(tiramisu::var("outGPyramid_0_s0_y"), tiramisu::var("outGPyramid_0_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), t802, (((tiramisu::var("outGPyramid_0_s0_x") / tiramisu::expr((int32_t)2)) + ((tiramisu::var("outGPyramid_0_s0_x") % tiramisu::expr((int32_t)2)) * tiramisu::expr((int32_t)2))) + tiramisu::expr((int32_t)-1))) * tiramisu::expr((float)0.25)) + (gPyramid_1_s0((tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::expr(tiramisu::o_cast, tiramisu::p_int32, (gray_s0(tiramisu::var("outGPyramid_0_s0_y"), tiramisu::var("outGPyramid_0_s0_x")) * tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, (tiramisu::expr(levels) + tiramisu::expr((int32_t)-1))))), (tiramisu::expr(levels) + tiramisu::expr((int32_t)-2))), tiramisu::expr((int32_t)0)) + tiramisu::expr((int32_t)1)), t803, t804) * tiramisu::expr((float)0.75))) * tiramisu::expr((float)0.75))))))));
    outGPyramid_0_s0.set_access("{outGPyramid_0_s0[outGPyramid_0_s0_y, outGPyramid_0_s0_x]->buff_outGPyramid_0[outGPyramid_0_s0_y, outGPyramid_0_s0_x]}");

    // Define compute order for constants of "outGPyramid_0_s0".
    t789.after(t788, t788.get_loop_level_number_from_dimension_name("outGPyramid_1_s0_x"));
    t790.after(t789, t788.get_loop_level_number_from_dimension_name("outGPyramid_1_s0_x"));
    t791.after(t790, t788.get_loop_level_number_from_dimension_name("outGPyramid_1_s0_x"));
    t792.after(t791, t788.get_loop_level_number_from_dimension_name("outGPyramid_1_s0_x"));
    t793.after(t792, t788.get_loop_level_number_from_dimension_name("outGPyramid_1_s0_x"));
    t794.after(t793, t788.get_loop_level_number_from_dimension_name("outGPyramid_1_s0_x"));
    t795.after(t794, t788.get_loop_level_number_from_dimension_name("outGPyramid_1_s0_x"));
    t796.after(t795, t788.get_loop_level_number_from_dimension_name("outGPyramid_1_s0_x"));
    t797.after(t796, t788.get_loop_level_number_from_dimension_name("outGPyramid_1_s0_x"));
    t798.after(t797, t788.get_loop_level_number_from_dimension_name("outGPyramid_1_s0_x"));
    t799.after(t798, t788.get_loop_level_number_from_dimension_name("outGPyramid_1_s0_x"));
    t800.after(t799, t788.get_loop_level_number_from_dimension_name("outGPyramid_1_s0_x"));
    t801.after(t800, t788.get_loop_level_number_from_dimension_name("outGPyramid_1_s0_x"));
    t802.after(t801, t788.get_loop_level_number_from_dimension_name("outGPyramid_1_s0_x"));
    t803.after(t802, t788.get_loop_level_number_from_dimension_name("outGPyramid_1_s0_x"));
    t804.after(t803, t788.get_loop_level_number_from_dimension_name("outGPyramid_1_s0_x"));

    // Define compute level for "outGPyramid_0".
    outGPyramid_0_s0.after(t804, t788.get_loop_level_number_from_dimension_name("outGPyramid_1_s0_x"));

    // Define loop bounds for dimension "local_laplacian_s0_c".
    tiramisu::constant local_laplacian_s0_c_loop_min("local_laplacian_s0_c_loop_min", tiramisu::expr((int32_t)0), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant local_laplacian_s0_c_loop_extent("local_laplacian_s0_c_loop_extent", tiramisu::expr(local_laplacian_extent_2), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);

    // Define loop bounds for dimension "local_laplacian_s0_y".
    tiramisu::constant local_laplacian_s0_y_loop_min("local_laplacian_s0_y_loop_min", tiramisu::expr((int32_t)0), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant local_laplacian_s0_y_loop_extent("local_laplacian_s0_y_loop_extent", tiramisu::expr(local_laplacian_extent_1), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);

    // Define loop bounds for dimension "local_laplacian_s0_x".
    tiramisu::constant local_laplacian_s0_x_loop_min("local_laplacian_s0_x_loop_min", tiramisu::expr((int32_t)0), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::constant local_laplacian_s0_x_loop_extent("local_laplacian_s0_x_loop_extent", tiramisu::expr(local_laplacian_extent_0), tiramisu::p_int32, true, NULL, 0, &laplacian_tiramisu);
    tiramisu::computation local_laplacian_s0(
        "[local_laplacian_s0_c_loop_min, local_laplacian_s0_c_loop_extent, local_laplacian_s0_y_loop_min, local_laplacian_s0_y_loop_extent, local_laplacian_s0_x_loop_min, local_laplacian_s0_x_loop_extent]->{local_laplacian_s0[local_laplacian_s0_c, local_laplacian_s0_y, local_laplacian_s0_x]: "
        "(local_laplacian_s0_c_loop_min <= local_laplacian_s0_c <= ((local_laplacian_s0_c_loop_min + local_laplacian_s0_c_loop_extent) + -1)) and (local_laplacian_s0_y_loop_min <= local_laplacian_s0_y <= ((local_laplacian_s0_y_loop_min + local_laplacian_s0_y_loop_extent) + -1)) and (local_laplacian_s0_x_loop_min <= local_laplacian_s0_x <= ((local_laplacian_s0_x_loop_min + local_laplacian_s0_x_loop_extent) + -1))}",
        tiramisu::expr(), true, tiramisu::p_uint16, &laplacian_tiramisu);
    tiramisu::constant t805("t805", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::var("local_laplacian_s0_c"), ((tiramisu::var("input_min_2") + tiramisu::expr(input_extent_2)) + tiramisu::expr((int32_t)-1))), tiramisu::var("input_min_2")), tiramisu::p_int32, false, &local_laplacian_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t806("t806", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::var("local_laplacian_s0_y"), ((tiramisu::var("input_min_1") + tiramisu::expr(input_extent_1)) + tiramisu::expr((int32_t)-1))), tiramisu::var("input_min_1")), tiramisu::p_int32, false, &local_laplacian_s0, 1, &laplacian_tiramisu);
    tiramisu::constant t807("t807", tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, tiramisu::var("local_laplacian_s0_x"), ((tiramisu::var("input_min_0") + tiramisu::expr(input_extent_0)) + tiramisu::expr((int32_t)-1))), tiramisu::var("input_min_0")), tiramisu::p_int32, false, &local_laplacian_s0, 1, &laplacian_tiramisu);
    local_laplacian_s0.set_expression(tiramisu::expr(tiramisu::o_cast, tiramisu::p_uint16, (tiramisu::expr(tiramisu::o_max, tiramisu::expr(tiramisu::o_min, ((outGPyramid_0_s0(tiramisu::var("local_laplacian_s0_y"), tiramisu::var("local_laplacian_s0_x")) * ((tiramisu::expr(tiramisu::o_cast, tiramisu::p_float32, input(t805, t806, t807)) * tiramisu::expr((float)1.5259e-05)) + tiramisu::expr((float)0.01))) / (gray_s0(tiramisu::var("local_laplacian_s0_y"), tiramisu::var("local_laplacian_s0_x")) + tiramisu::expr((float)0.01))), tiramisu::expr((float)1)), tiramisu::expr((float)0)) * tiramisu::expr((float)65535))));
    local_laplacian_s0.set_access("{local_laplacian_s0[local_laplacian_s0_c, local_laplacian_s0_y, local_laplacian_s0_x]->buff_local_laplacian[local_laplacian_s0_c, local_laplacian_s0_y, local_laplacian_s0_x]}");

    // Define compute order for constants of "local_laplacian_s0".
    t805.after(t804, t804.get_loop_level_number_from_dimension_name("outGPyramid_0_s0_x"));
    t806.after(t805, t804.get_loop_level_number_from_dimension_name("outGPyramid_0_s0_x"));
    t807.after(t806, t804.get_loop_level_number_from_dimension_name("outGPyramid_0_s0_x"));

    // Define compute level for "local_laplacian".
    local_laplacian_s0.after(t807, t804.get_loop_level_number_from_dimension_name("outGPyramid_0_s0_x"));

    /*// Declare vars.
    tiramisu::var gPyramid_1_s0_x("gPyramid_1_s0_x");
    tiramisu::var gPyramid_1_s0_x_v293("gPyramid_1_s0_x_v293");
    tiramisu::var gPyramid_1_s0_x_x("gPyramid_1_s0_x_x");
    tiramisu::var gPyramid_1_s0_y("gPyramid_1_s0_y");
    tiramisu::var gPyramid_1_s0_y_v289("gPyramid_1_s0_y_v289");
    tiramisu::var gPyramid_1_s0_y_y("gPyramid_1_s0_y_y");
    tiramisu::var gPyramid_2_s0_x("gPyramid_2_s0_x");
    tiramisu::var gPyramid_2_s0_x_v313("gPyramid_2_s0_x_v313");
    tiramisu::var gPyramid_2_s0_x_x("gPyramid_2_s0_x_x");
    tiramisu::var gPyramid_2_s0_y("gPyramid_2_s0_y");
    tiramisu::var gPyramid_2_s0_y_v309("gPyramid_2_s0_y_v309");
    tiramisu::var gPyramid_2_s0_y_y("gPyramid_2_s0_y_y");
    tiramisu::var gPyramid_3_s0_x("gPyramid_3_s0_x");
    tiramisu::var gPyramid_3_s0_x_v333("gPyramid_3_s0_x_v333");
    tiramisu::var gPyramid_3_s0_x_x("gPyramid_3_s0_x_x");
    tiramisu::var gPyramid_3_s0_y("gPyramid_3_s0_y");
    tiramisu::var gPyramid_3_s0_y_v329("gPyramid_3_s0_y_v329");
    tiramisu::var gPyramid_3_s0_y_y("gPyramid_3_s0_y_y");
    tiramisu::var gPyramid_4_s0_k("gPyramid_4_s0_k");
    tiramisu::var gPyramid_4_s0_x("gPyramid_4_s0_x");
    tiramisu::var gPyramid_4_s0_x_v353("gPyramid_4_s0_x_v353");
    tiramisu::var gPyramid_4_s0_x_x("gPyramid_4_s0_x_x");
    tiramisu::var gPyramid_4_s0_y("gPyramid_4_s0_y");
    tiramisu::var gPyramid_4_s0_y_v349("gPyramid_4_s0_y_v349");
    tiramisu::var gPyramid_4_s0_y_y("gPyramid_4_s0_y_y");
    tiramisu::var gPyramid_5_s0_k("gPyramid_5_s0_k");
    tiramisu::var gPyramid_5_s0_x("gPyramid_5_s0_x");
    tiramisu::var gPyramid_5_s0_x_v373("gPyramid_5_s0_x_v373");
    tiramisu::var gPyramid_5_s0_x_x("gPyramid_5_s0_x_x");
    tiramisu::var gPyramid_5_s0_y("gPyramid_5_s0_y");
    tiramisu::var gPyramid_5_s0_y_v369("gPyramid_5_s0_y_v369");
    tiramisu::var gPyramid_5_s0_y_y("gPyramid_5_s0_y_y");
    tiramisu::var gPyramid_6_s0_k("gPyramid_6_s0_k");
    tiramisu::var gPyramid_6_s0_x("gPyramid_6_s0_x");
    tiramisu::var gPyramid_6_s0_x_v393("gPyramid_6_s0_x_v393");
    tiramisu::var gPyramid_6_s0_x_x("gPyramid_6_s0_x_x");
    tiramisu::var gPyramid_6_s0_y("gPyramid_6_s0_y");
    tiramisu::var gPyramid_6_s0_y_v389("gPyramid_6_s0_y_v389");
    tiramisu::var gPyramid_6_s0_y_y("gPyramid_6_s0_y_y");
    tiramisu::var gPyramid_7_s0_k("gPyramid_7_s0_k");
    tiramisu::var gPyramid_7_s0_x("gPyramid_7_s0_x");
    tiramisu::var gPyramid_7_s0_x_v413("gPyramid_7_s0_x_v413");
    tiramisu::var gPyramid_7_s0_x_x("gPyramid_7_s0_x_x");
    tiramisu::var gPyramid_7_s0_y("gPyramid_7_s0_y");
    tiramisu::var gPyramid_7_s0_y_v409("gPyramid_7_s0_y_v409");
    tiramisu::var gPyramid_7_s0_y_y("gPyramid_7_s0_y_y");
    tiramisu::var gray_s0_x("gray_s0_x");
    tiramisu::var gray_s0_x_v273("gray_s0_x_v273");
    tiramisu::var gray_s0_x_x("gray_s0_x_x");
    tiramisu::var gray_s0_y("gray_s0_y");
    tiramisu::var gray_s0_y_v270("gray_s0_y_v270");
    tiramisu::var gray_s0_y_y("gray_s0_y_y");
    tiramisu::var inGPyramid_1_s0_x("inGPyramid_1_s0_x");
    tiramisu::var inGPyramid_1_s0_x_v285("inGPyramid_1_s0_x_v285");
    tiramisu::var inGPyramid_1_s0_x_x("inGPyramid_1_s0_x_x");
    tiramisu::var inGPyramid_1_s0_y("inGPyramid_1_s0_y");
    tiramisu::var inGPyramid_1_s0_y_v282("inGPyramid_1_s0_y_v282");
    tiramisu::var inGPyramid_1_s0_y_y("inGPyramid_1_s0_y_y");
    tiramisu::var inGPyramid_2_s0_x("inGPyramid_2_s0_x");
    tiramisu::var inGPyramid_2_s0_x_v305("inGPyramid_2_s0_x_v305");
    tiramisu::var inGPyramid_2_s0_x_x("inGPyramid_2_s0_x_x");
    tiramisu::var inGPyramid_2_s0_y("inGPyramid_2_s0_y");
    tiramisu::var inGPyramid_2_s0_y_v302("inGPyramid_2_s0_y_v302");
    tiramisu::var inGPyramid_2_s0_y_y("inGPyramid_2_s0_y_y");
    tiramisu::var inGPyramid_3_s0_x("inGPyramid_3_s0_x");
    tiramisu::var inGPyramid_3_s0_x_v325("inGPyramid_3_s0_x_v325");
    tiramisu::var inGPyramid_3_s0_x_x("inGPyramid_3_s0_x_x");
    tiramisu::var inGPyramid_3_s0_y("inGPyramid_3_s0_y");
    tiramisu::var inGPyramid_3_s0_y_v322("inGPyramid_3_s0_y_v322");
    tiramisu::var inGPyramid_3_s0_y_y("inGPyramid_3_s0_y_y");
    tiramisu::var inGPyramid_4_s0_x("inGPyramid_4_s0_x");
    tiramisu::var inGPyramid_4_s0_x_v345("inGPyramid_4_s0_x_v345");
    tiramisu::var inGPyramid_4_s0_x_x("inGPyramid_4_s0_x_x");
    tiramisu::var inGPyramid_4_s0_y("inGPyramid_4_s0_y");
    tiramisu::var inGPyramid_4_s0_y_v342("inGPyramid_4_s0_y_v342");
    tiramisu::var inGPyramid_4_s0_y_y("inGPyramid_4_s0_y_y");
    tiramisu::var inGPyramid_5_s0_x("inGPyramid_5_s0_x");
    tiramisu::var inGPyramid_5_s0_x_v365("inGPyramid_5_s0_x_v365");
    tiramisu::var inGPyramid_5_s0_x_x("inGPyramid_5_s0_x_x");
    tiramisu::var inGPyramid_5_s0_y("inGPyramid_5_s0_y");
    tiramisu::var inGPyramid_5_s0_y_v362("inGPyramid_5_s0_y_v362");
    tiramisu::var inGPyramid_5_s0_y_y("inGPyramid_5_s0_y_y");
    tiramisu::var inGPyramid_6_s0_x("inGPyramid_6_s0_x");
    tiramisu::var inGPyramid_6_s0_x_v385("inGPyramid_6_s0_x_v385");
    tiramisu::var inGPyramid_6_s0_x_x("inGPyramid_6_s0_x_x");
    tiramisu::var inGPyramid_6_s0_y("inGPyramid_6_s0_y");
    tiramisu::var inGPyramid_6_s0_y_v382("inGPyramid_6_s0_y_v382");
    tiramisu::var inGPyramid_6_s0_y_y("inGPyramid_6_s0_y_y");
    tiramisu::var inGPyramid_7_s0_x("inGPyramid_7_s0_x");
    tiramisu::var inGPyramid_7_s0_x_v405("inGPyramid_7_s0_x_v405");
    tiramisu::var inGPyramid_7_s0_x_x("inGPyramid_7_s0_x_x");
    tiramisu::var inGPyramid_7_s0_y("inGPyramid_7_s0_y");
    tiramisu::var inGPyramid_7_s0_y_v402("inGPyramid_7_s0_y_v402");
    tiramisu::var inGPyramid_7_s0_y_y("inGPyramid_7_s0_y_y");
    tiramisu::var local_laplacian_s0_x("local_laplacian_s0_x");
    tiramisu::var local_laplacian_s0_x_v267("local_laplacian_s0_x_v267");
    tiramisu::var local_laplacian_s0_x_x("local_laplacian_s0_x_x");
    tiramisu::var local_laplacian_s0_y("local_laplacian_s0_y");
    tiramisu::var local_laplacian_s0_y_v263("local_laplacian_s0_y_v263");
    tiramisu::var local_laplacian_s0_y_y("local_laplacian_s0_y_y");
    tiramisu::var outGPyramid_0_s0_x("outGPyramid_0_s0_x");
    tiramisu::var outGPyramid_0_s0_x_v279("outGPyramid_0_s0_x_v279");
    tiramisu::var outGPyramid_0_s0_x_x("outGPyramid_0_s0_x_x");
    tiramisu::var outGPyramid_0_s0_y("outGPyramid_0_s0_y");
    tiramisu::var outGPyramid_0_s0_y_v276("outGPyramid_0_s0_y_v276");
    tiramisu::var outGPyramid_0_s0_y_y("outGPyramid_0_s0_y_y");
    tiramisu::var outGPyramid_1_s0_x("outGPyramid_1_s0_x");
    tiramisu::var outGPyramid_1_s0_x_v299("outGPyramid_1_s0_x_v299");
    tiramisu::var outGPyramid_1_s0_x_x("outGPyramid_1_s0_x_x");
    tiramisu::var outGPyramid_1_s0_y("outGPyramid_1_s0_y");
    tiramisu::var outGPyramid_1_s0_y_v296("outGPyramid_1_s0_y_v296");
    tiramisu::var outGPyramid_1_s0_y_y("outGPyramid_1_s0_y_y");
    tiramisu::var outGPyramid_2_s0_x("outGPyramid_2_s0_x");
    tiramisu::var outGPyramid_2_s0_x_v319("outGPyramid_2_s0_x_v319");
    tiramisu::var outGPyramid_2_s0_x_x("outGPyramid_2_s0_x_x");
    tiramisu::var outGPyramid_2_s0_y("outGPyramid_2_s0_y");
    tiramisu::var outGPyramid_2_s0_y_v316("outGPyramid_2_s0_y_v316");
    tiramisu::var outGPyramid_2_s0_y_y("outGPyramid_2_s0_y_y");
    tiramisu::var outGPyramid_3_s0_x("outGPyramid_3_s0_x");
    tiramisu::var outGPyramid_3_s0_x_v339("outGPyramid_3_s0_x_v339");
    tiramisu::var outGPyramid_3_s0_x_x("outGPyramid_3_s0_x_x");
    tiramisu::var outGPyramid_3_s0_y("outGPyramid_3_s0_y");
    tiramisu::var outGPyramid_3_s0_y_v336("outGPyramid_3_s0_y_v336");
    tiramisu::var outGPyramid_3_s0_y_y("outGPyramid_3_s0_y_y");
    tiramisu::var outGPyramid_4_s0_x("outGPyramid_4_s0_x");
    tiramisu::var outGPyramid_4_s0_x_v359("outGPyramid_4_s0_x_v359");
    tiramisu::var outGPyramid_4_s0_x_x("outGPyramid_4_s0_x_x");
    tiramisu::var outGPyramid_4_s0_y("outGPyramid_4_s0_y");
    tiramisu::var outGPyramid_4_s0_y_v356("outGPyramid_4_s0_y_v356");
    tiramisu::var outGPyramid_4_s0_y_y("outGPyramid_4_s0_y_y");
    tiramisu::var outGPyramid_5_s0_x("outGPyramid_5_s0_x");
    tiramisu::var outGPyramid_5_s0_x_v379("outGPyramid_5_s0_x_v379");
    tiramisu::var outGPyramid_5_s0_x_x("outGPyramid_5_s0_x_x");
    tiramisu::var outGPyramid_5_s0_y("outGPyramid_5_s0_y");
    tiramisu::var outGPyramid_5_s0_y_v376("outGPyramid_5_s0_y_v376");
    tiramisu::var outGPyramid_5_s0_y_y("outGPyramid_5_s0_y_y");
    tiramisu::var outGPyramid_6_s0_x("outGPyramid_6_s0_x");
    tiramisu::var outGPyramid_6_s0_x_v399("outGPyramid_6_s0_x_v399");
    tiramisu::var outGPyramid_6_s0_x_x("outGPyramid_6_s0_x_x");
    tiramisu::var outGPyramid_6_s0_y("outGPyramid_6_s0_y");
    tiramisu::var outGPyramid_6_s0_y_v396("outGPyramid_6_s0_y_v396");
    tiramisu::var outGPyramid_6_s0_y_y("outGPyramid_6_s0_y_y");
    tiramisu::var outGPyramid_7_s0_x("outGPyramid_7_s0_x");
    tiramisu::var outGPyramid_7_s0_x_v419("outGPyramid_7_s0_x_v419");
    tiramisu::var outGPyramid_7_s0_x_x("outGPyramid_7_s0_x_x");
    tiramisu::var outGPyramid_7_s0_y("outGPyramid_7_s0_y");
    tiramisu::var outGPyramid_7_s0_y_v416("outGPyramid_7_s0_y_v416");
    tiramisu::var outGPyramid_7_s0_y_y("outGPyramid_7_s0_y_y");

    // Add schedules.
    gray_s0.split(gray_s0_y, 32, gray_s0_y_y, gray_s0_y_v270);
    gray_s0.split(gray_s0_x, 8, gray_s0_x_x, gray_s0_x_v273);
    gray_s0.tag_vector_level(gray_s0_x_v273, 8);
    gray_s0.tag_parallel_level(gray_s0_y_y);
    gPyramid_1_s0.split(gPyramid_1_s0_y, 8, gPyramid_1_s0_y_y, gPyramid_1_s0_y_v289);
    gPyramid_1_s0.split(gPyramid_1_s0_x, 8, gPyramid_1_s0_x_x, gPyramid_1_s0_x_v293);
    gPyramid_1_s0.tag_vector_level(gPyramid_1_s0_x_v293, 8);
    gPyramid_1_s0.tag_parallel_level(gPyramid_1_s0_y_y);
    inGPyramid_1_s0.split(inGPyramid_1_s0_y, 32, inGPyramid_1_s0_y_y, inGPyramid_1_s0_y_v282);
    inGPyramid_1_s0.split(inGPyramid_1_s0_x, 8, inGPyramid_1_s0_x_x, inGPyramid_1_s0_x_v285);
    inGPyramid_1_s0.tag_vector_level(inGPyramid_1_s0_x_v285, 8);
    inGPyramid_1_s0.tag_parallel_level(inGPyramid_1_s0_y_y);
    gPyramid_2_s0.split(gPyramid_2_s0_y, 8, gPyramid_2_s0_y_y, gPyramid_2_s0_y_v309);
    gPyramid_2_s0.split(gPyramid_2_s0_x, 8, gPyramid_2_s0_x_x, gPyramid_2_s0_x_v313);
    gPyramid_2_s0.tag_vector_level(gPyramid_2_s0_x_v313, 8);
    gPyramid_2_s0.tag_parallel_level(gPyramid_2_s0_y_y);
    inGPyramid_2_s0.split(inGPyramid_2_s0_y, 32, inGPyramid_2_s0_y_y, inGPyramid_2_s0_y_v302);
    inGPyramid_2_s0.split(inGPyramid_2_s0_x, 8, inGPyramid_2_s0_x_x, inGPyramid_2_s0_x_v305);
    inGPyramid_2_s0.tag_vector_level(inGPyramid_2_s0_x_v305, 8);
    inGPyramid_2_s0.tag_parallel_level(inGPyramid_2_s0_y_y);
    gPyramid_3_s0.split(gPyramid_3_s0_y, 8, gPyramid_3_s0_y_y, gPyramid_3_s0_y_v329);
    gPyramid_3_s0.split(gPyramid_3_s0_x, 8, gPyramid_3_s0_x_x, gPyramid_3_s0_x_v333);
    gPyramid_3_s0.tag_vector_level(gPyramid_3_s0_x_v333, 8);
    gPyramid_3_s0.tag_parallel_level(gPyramid_3_s0_y_y);
    inGPyramid_3_s0.split(inGPyramid_3_s0_y, 32, inGPyramid_3_s0_y_y, inGPyramid_3_s0_y_v322);
    inGPyramid_3_s0.split(inGPyramid_3_s0_x, 8, inGPyramid_3_s0_x_x, inGPyramid_3_s0_x_v325);
    inGPyramid_3_s0.tag_vector_level(inGPyramid_3_s0_x_v325, 8);
    inGPyramid_3_s0.tag_parallel_level(inGPyramid_3_s0_y_y);
    gPyramid_4_s0.split(gPyramid_4_s0_y, 8, gPyramid_4_s0_y_y, gPyramid_4_s0_y_v349);
    gPyramid_4_s0.split(gPyramid_4_s0_x, 8, gPyramid_4_s0_x_x, gPyramid_4_s0_x_v353);
    gPyramid_4_s0.tag_vector_level(gPyramid_4_s0_x_v353, 8);
    gPyramid_4_s0.tag_parallel_level(gPyramid_4_s0_k);
    gPyramid_4_s0.tag_parallel_level(gPyramid_4_s0_y_y);
    inGPyramid_4_s0.split(inGPyramid_4_s0_y, 32, inGPyramid_4_s0_y_y, inGPyramid_4_s0_y_v342);
    inGPyramid_4_s0.split(inGPyramid_4_s0_x, 8, inGPyramid_4_s0_x_x, inGPyramid_4_s0_x_v345);
    inGPyramid_4_s0.tag_vector_level(inGPyramid_4_s0_x_v345, 8);
    inGPyramid_4_s0.tag_parallel_level(inGPyramid_4_s0_y_y);
    gPyramid_5_s0.split(gPyramid_5_s0_y, 8, gPyramid_5_s0_y_y, gPyramid_5_s0_y_v369);
    gPyramid_5_s0.split(gPyramid_5_s0_x, 8, gPyramid_5_s0_x_x, gPyramid_5_s0_x_v373);
    gPyramid_5_s0.tag_vector_level(gPyramid_5_s0_x_v373, 8);
    gPyramid_5_s0.tag_parallel_level(gPyramid_5_s0_k);
    gPyramid_5_s0.tag_parallel_level(gPyramid_5_s0_y_y);
    inGPyramid_5_s0.split(inGPyramid_5_s0_y, 32, inGPyramid_5_s0_y_y, inGPyramid_5_s0_y_v362);
    inGPyramid_5_s0.split(inGPyramid_5_s0_x, 8, inGPyramid_5_s0_x_x, inGPyramid_5_s0_x_v365);
    inGPyramid_5_s0.tag_vector_level(inGPyramid_5_s0_x_v365, 8);
    inGPyramid_5_s0.tag_parallel_level(inGPyramid_5_s0_y_y);
    gPyramid_6_s0.split(gPyramid_6_s0_y, 8, gPyramid_6_s0_y_y, gPyramid_6_s0_y_v389);
    gPyramid_6_s0.split(gPyramid_6_s0_x, 8, gPyramid_6_s0_x_x, gPyramid_6_s0_x_v393);
    gPyramid_6_s0.tag_vector_level(gPyramid_6_s0_x_v393, 8);
    gPyramid_6_s0.tag_parallel_level(gPyramid_6_s0_k);
    gPyramid_6_s0.tag_parallel_level(gPyramid_6_s0_y_y);
    inGPyramid_6_s0.split(inGPyramid_6_s0_y, 32, inGPyramid_6_s0_y_y, inGPyramid_6_s0_y_v382);
    inGPyramid_6_s0.split(inGPyramid_6_s0_x, 8, inGPyramid_6_s0_x_x, inGPyramid_6_s0_x_v385);
    inGPyramid_6_s0.tag_vector_level(inGPyramid_6_s0_x_v385, 8);
    inGPyramid_6_s0.tag_parallel_level(inGPyramid_6_s0_y_y);
    gPyramid_7_s0.split(gPyramid_7_s0_y, 8, gPyramid_7_s0_y_y, gPyramid_7_s0_y_v409);
    gPyramid_7_s0.split(gPyramid_7_s0_x, 8, gPyramid_7_s0_x_x, gPyramid_7_s0_x_v413);
    gPyramid_7_s0.tag_vector_level(gPyramid_7_s0_x_v413, 8);
    gPyramid_7_s0.tag_parallel_level(gPyramid_7_s0_k);
    gPyramid_7_s0.tag_parallel_level(gPyramid_7_s0_y_y);
    inGPyramid_7_s0.split(inGPyramid_7_s0_y, 32, inGPyramid_7_s0_y_y, inGPyramid_7_s0_y_v402);
    inGPyramid_7_s0.split(inGPyramid_7_s0_x, 8, inGPyramid_7_s0_x_x, inGPyramid_7_s0_x_v405);
    inGPyramid_7_s0.tag_vector_level(inGPyramid_7_s0_x_v405, 8);
    inGPyramid_7_s0.tag_parallel_level(inGPyramid_7_s0_y_y);
    outGPyramid_7_s0.split(outGPyramid_7_s0_y, 32, outGPyramid_7_s0_y_y, outGPyramid_7_s0_y_v416);
    outGPyramid_7_s0.split(outGPyramid_7_s0_x, 8, outGPyramid_7_s0_x_x, outGPyramid_7_s0_x_v419);
    outGPyramid_7_s0.tag_vector_level(outGPyramid_7_s0_x_v419, 8);
    outGPyramid_7_s0.tag_parallel_level(outGPyramid_7_s0_y_y);
    outGPyramid_6_s0.split(outGPyramid_6_s0_y, 32, outGPyramid_6_s0_y_y, outGPyramid_6_s0_y_v396);
    outGPyramid_6_s0.split(outGPyramid_6_s0_x, 8, outGPyramid_6_s0_x_x, outGPyramid_6_s0_x_v399);
    outGPyramid_6_s0.tag_vector_level(outGPyramid_6_s0_x_v399, 8);
    outGPyramid_6_s0.tag_parallel_level(outGPyramid_6_s0_y_y);
    outGPyramid_5_s0.split(outGPyramid_5_s0_y, 32, outGPyramid_5_s0_y_y, outGPyramid_5_s0_y_v376);
    outGPyramid_5_s0.split(outGPyramid_5_s0_x, 8, outGPyramid_5_s0_x_x, outGPyramid_5_s0_x_v379);
    outGPyramid_5_s0.tag_vector_level(outGPyramid_5_s0_x_v379, 8);
    outGPyramid_5_s0.tag_parallel_level(outGPyramid_5_s0_y_y);
    outGPyramid_4_s0.split(outGPyramid_4_s0_y, 32, outGPyramid_4_s0_y_y, outGPyramid_4_s0_y_v356);
    outGPyramid_4_s0.split(outGPyramid_4_s0_x, 8, outGPyramid_4_s0_x_x, outGPyramid_4_s0_x_v359);
    outGPyramid_4_s0.tag_vector_level(outGPyramid_4_s0_x_v359, 8);
    outGPyramid_4_s0.tag_parallel_level(outGPyramid_4_s0_y_y);
    outGPyramid_3_s0.split(outGPyramid_3_s0_y, 32, outGPyramid_3_s0_y_y, outGPyramid_3_s0_y_v336);
    outGPyramid_3_s0.split(outGPyramid_3_s0_x, 8, outGPyramid_3_s0_x_x, outGPyramid_3_s0_x_v339);
    outGPyramid_3_s0.tag_vector_level(outGPyramid_3_s0_x_v339, 8);
    outGPyramid_3_s0.tag_parallel_level(outGPyramid_3_s0_y_y);
    outGPyramid_2_s0.split(outGPyramid_2_s0_y, 32, outGPyramid_2_s0_y_y, outGPyramid_2_s0_y_v316);
    outGPyramid_2_s0.split(outGPyramid_2_s0_x, 8, outGPyramid_2_s0_x_x, outGPyramid_2_s0_x_v319);
    outGPyramid_2_s0.tag_vector_level(outGPyramid_2_s0_x_v319, 8);
    outGPyramid_2_s0.tag_parallel_level(outGPyramid_2_s0_y_y);
    outGPyramid_1_s0.split(outGPyramid_1_s0_y, 32, outGPyramid_1_s0_y_y, outGPyramid_1_s0_y_v296);
    outGPyramid_1_s0.split(outGPyramid_1_s0_x, 8, outGPyramid_1_s0_x_x, outGPyramid_1_s0_x_v299);
    outGPyramid_1_s0.tag_vector_level(outGPyramid_1_s0_x_v299, 8);
    outGPyramid_1_s0.tag_parallel_level(outGPyramid_1_s0_y_y);
    outGPyramid_0_s0.split(outGPyramid_0_s0_y, 32, outGPyramid_0_s0_y_y, outGPyramid_0_s0_y_v276);
    outGPyramid_0_s0.split(outGPyramid_0_s0_x, 8, outGPyramid_0_s0_x_x, outGPyramid_0_s0_x_v279);
    outGPyramid_0_s0.tag_vector_level(outGPyramid_0_s0_x_v279, 8);
    outGPyramid_0_s0.tag_parallel_level(outGPyramid_0_s0_y_y);
    local_laplacian_s0.split(local_laplacian_s0_y, 32, local_laplacian_s0_y_y, local_laplacian_s0_y_v263);
    local_laplacian_s0.split(local_laplacian_s0_x, 8, local_laplacian_s0_x_x, local_laplacian_s0_x_v267);
    local_laplacian_s0.tag_vector_level(local_laplacian_s0_x_v267, 8);
    local_laplacian_s0.tag_parallel_level(local_laplacian_s0_y_y);*/

    laplacian_tiramisu.set_arguments({&buff_input, &buff_local_laplacian});
    laplacian_tiramisu.gen_time_space_domain();
    laplacian_tiramisu.gen_isl_ast();
    laplacian_tiramisu.gen_halide_stmt();
    laplacian_tiramisu.dump_halide_stmt();
    laplacian_tiramisu.gen_halide_obj("build/generated_fct_laplacian_tiramisu.o");

    return 0;
}
